This works for me:
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();
}
source
share