我正在创建一个应用程序,它需要同时打开至少676个文件到最多1400个文件。我将使用StreamWriter
类写入这些文件,并使用StreamReader
类读取数据。因此,对于可以同时打开以便在C#中读取或写入的文件的最大限制,就像VC ++一样,如下面的链接所述。
Is there a limit on number of open files in Windows。
答案 0 :(得分:7)
.NET打开的文件的上限受Win32 API CreateFile强加的限制,即16384。
答案 1 :(得分:6)
这对我有用:
var streams = new Stream[10000];
for (var i = 0; i < streams.Length; i++) {
streams[i] = File.OpenWrite(Path.Combine(Path.GetTempFileName()));
streams[i].WriteByte((byte)'A');
}
var tasks = new Task[streams.Length];
for (var i = 0; i < streams.Length; i++) {
var index = i;
tasks[i] = new Task(() => {
streams[index].WriteByte((byte)'B');
});
tasks[i].Start();
}
Task.WaitAll(tasks);
for (var i = 0; i < streams.Length; i++) {
streams[i].Close();
}