View difference between Paste ID: UuuHwD4g and u3AKxx7i
SHOW: | | - or go back to the newest paste.
1
//When I run this method, it is used in Task.WhenAny() with more such instances (I'm trying to tap into streams in proxy to log what's flowing).
2
//This method throws IndexOutOfRangeException on readable[i].CopyToAsync(outputStreams[i]) - Debugger shows value of 'i' in time of execution is 2 (outputStreams.Length is 2).
3
//Shouldn't lambda exception store the value of 'i' from time of declaration, instead of finding the current value (which might not exist already)?
4
5
public static Task MultiplyStream(this Stream inputStream, params Stream[] outputStreams)
6
{
7
  var splitStream = new ReadableSplitStream(inputStream);
8-
  Stream[] readable = new Stream[outputStreams.Length];
8+
  var tasks = outputStreams.Select(x => Task.Run(() => splitStream.GetForwardReadOnlyStream().CopyToAsync(x))).ToList();
9-
  Task[] tasks = new Task[outputStreams.Length];
9+
10-
  for (int i = 0; i < outputStreams.Length; i++)
10+
11-
  {
11+
12-
    readable[i] = splitStream.GetForwardReadOnlyStream();
12+
13-
    tasks[i] = Task.Run(() => readable[i].CopyToAsync(outputStreams[i]));
13+