private static Task <string> Stage1Async(int i) { Write("\r\n Stage1"); var asyncToken = new AsyncToken(i.ToString()); _buffer1.Enqueue(asyncToken); return(asyncToken.Completion); }
private static void HandleStage2Listener(object state) { AsyncToken token; while (_buffer1.TryDequeue(out token)) { Write($"\r\n Stage2 Handling [{token}]"); string value = $"#{token} by {state}"; var nextToken = new AsyncToken(value, token); _buffer2.Add(nextToken); } }
public AsyncToken(string value, AsyncToken continueFrom) { _value = value; _tcs = continueFrom._tcs; }