Maybe I think the wrong way?
It all depends on what you want to receive. It should be remembered that the flow is a rather expensive resource of the operating system and its support requires overhead. Running simultaneously running threads is much more than the processor cores - almost certainly will be slower than just sequential execution.
As for the initial question, a parameter can be passed to the stream creation function, which will be available in the stream function.
Thread newThread = new Thread(Work.DoWork); newThread.Start(42); public static void DoWork(object data) { var IntVal = (int)data; }
details can be found in the documentation .