Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static async Task<string> DoIt()
- {
- Random r = new Random();
- Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
- Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
- return await MagicFunction(t1, t2);
- }
- static Task<string> MagicFunction(Task<string> t1, Task<string> t2)
- {
- TaskCompletionSource<string> res = new TaskCompletionSource<string>();
- Task.Factory.ContinueWhenAny(new Task<string>[] { t1, t2 }, t => res.SetResult(t.Result));
- return res.Task;
- }
- static async Task<string[]> DoIt()
- {
- Random r = new Random();
- Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
- Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
- return await Task.WhenAll(t1, t2); // вернет string[]
- }
- static async Task<string> DoIt()
- {
- Random r = new Random();
- Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
- Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
- var task = await Task.WhenAny(t1, t2); // вернет Task<string>
- return await task; // вернет string
- }
Add Comment
Please, Sign In to add comment