110,571
社区成员
发帖
与我相关
我的任务
分享
for (int i = 0; i < 10000; i++)
{
using (StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + @"\5.txt", true))
{
sw.WriteLine(i.ToString() + "\r");
}
}
loop:
try
{
var a = new StreamWriter("1.txt", true);
}
catch (Exception ex)
{
//Console.WriteLine(ex.Message.ToString());
sleep(10);
goto loop;
}
try
{
var a = new StreamWriter("1.txt", true);
var b = new StreamWriter("1.txt", true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
只要目标文件是同一个,则就会发生异常
何况你还是在多线程模式下工作
for (int i = 0; i < 10000; i++)
{
using (StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + @"\5.txt", true))
{
sw.WriteLine(i.ToString() + "\r");
sw.Close();
}
}
using (StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + @"\5.txt", true))
{
sw.WriteLine(i.ToString() + "\r");
sw.Close();
}
这或许就能解决你的问题。for (int i = 0; i < 10000; i++)
{
for (var j = 0; j < 5; ++j)
{
try
{
NewMethod(i);
}
catch
{
if (j >= 4)
throw;
}
}
}
一般来说,这种代码不会刻意去重试(这里重试了4遍)。程序的最终的架构改变以测试为准,如果测试发现一个实际的系统有这类问题,那么往往就修改程序架构了。例如一个又要不断写入数据又要被读取的文件,它就不是这样的“不断close”的了。private static void NewMethod(int i)
{
using (StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + @"\5.txt", true))
{
sw.WriteLine(i.ToString() + "\r");
}
}
for (int i = 0; i < 10000; i++)
{
for (var j = 0; j < 5; ++j)
{
try
{
NewMethod(i);
}
catch
{
if (j >= 5)
throw;
}
}
}
StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + @"\5.txt", true);
for (int i = 0; i < 10000; i++)
{
sw.WriteLine(i.ToString() + "\r");
}
sw.Flush();
sw.Close();