Async/Await Id задач меняется - C#
Формулировка задачи:
Всем привет. Не совсем разобрался в асинхронности. Функция CreateStub просто заглушка. Вызываю другой метод, но суть в том ,что не понимаю как запустить эти задачи. Как корректно запустить список этих задач ?
List<int> abc = new List<int>() { 1, 2, 3 }; IEnumerable<Task<int>> Download = from tag in abc select CreateStub(); List<Task<int>> donwloadtask = Download.ToList(); while(donwloadtask.Count >0) { Task<int> first = await Task.WhenAny(Download); donwloadtask.Remove(first); var curr = first.Result; Console.WriteLine(curr); }
public static async Task<int> CreateStub() { Task<int> curr = new Task<int>( () => { Thread.Sleep(1000); return 123; }); int ncurr = await curr; return ncurr; }
Решение задачи: «Async/Await Id задач меняется»
textual
Листинг программы
using System; using System.Threading; using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; class Program { static void Main() { Foo(); Console.ReadKey(); } static async void Foo() { List<int> abc = new List<int>() { 1 }; IEnumerable<Task<int>> Download = from tag in abc select CreateStubAsync(); List<Task<int>> donwloadTask = Download.ToList(); while (donwloadTask.Count > 0) { Task<int> first = await Task.WhenAny(Download); donwloadTaskAsync.Remove(first); var curr = first.Result; int threadId = Thread.CurrentThread.ManagedThreadId; Console.WriteLine(threadId); Console.WriteLine(curr); } } public static async Task<int> CreateStubAsync() { Task<int> curr = Task.Run( () => { int threadId = Thread.CurrentThread.ManagedThreadId; Console.WriteLine(threadId); Thread.Sleep(1000); return 123; }); int ncurr = await curr; return ncurr; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д