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;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д