using System.Numerics;
using System.Threading.Tasks;
namespace Fibonacci_cs
{
class Program
{
static void Main(string[] args)
{
int i;
var ausgabe = Task.Factory.StartNew((() => {}));
BigInteger x, y = 1, z = 1;
for (i = 1; i < int.MaxValue; i++)
{
x = y;
Task.WaitAll();
y = z;
Task.Factory.StartNew((() => { z = BigInteger.Add(x, y); }));
Task.Factory.StartNew((() =>
{
if (ausgabe.IsCompleted)
{
ausgabe = Task.Factory.StartNew((() =>
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"A:\Fibonacci.txt"))
{
file.WriteLine("i: " + i);
file.WriteLine("z: " + z);
}
}));
}
}));
}
Task.WaitAll();
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"A:\Fibonacci.txt"))
{
file.WriteLine("i: " + i);
file.WriteLine("z: " + z);
}
}
}
}
我收到System.IO.IOException,因为该文件是&#34;正在使用&#34;。我错过了什么?使用后,进程是否未关闭文件?
我没有更多细节,只是我必须这样使用它。
答案 0 :(得分:0)
文件访问操作全部同时发生。我建议您在循环外部创建lock
,并在此流对象上使用var streamWriter = new System.IO.StreamWriter(@"A:\Fibonacci.txt");
//for loop
lock (streamWriter)
{
streamWriter.WriteLine("i: " + i);
streamWriter.WriteLine("z: " + z);
}
。
e.g。
{{1}}