Асинхронное программирование, Async и Await - C#
Формулировка задачи:
нужно сделать программу, которая в отдельном методе заполняет массив случайными числами. Пока массив заполняется, вывести в консоль какой-то текст, а после - сам массив. Учить только начал, не могу разобраться с функцией await, сколько в интернете не читаю, никак не доходит. В общем прошу помочь исправить код и желательно с объяснениями.
Собственно вот здесь ошибка:
и почему он не может дождаться моего списка не пойму.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace oopLab5
{
class Program
{
public static async void doSomething()
{
RandomNumbers rn = new RandomNumbers();
List<int> list = new List<int>();
list = rn.setArray();
Console.WriteLine("А пока массив заполняется рандомными числами вы можете задуматься о следующем:");
Console.WriteLine("Асинхронность необходима для действий, которые потенциально являются блокирующими, например, когда приложение получает доступ к вебу. Доступ к веб-ресурсам может быть медленным или осуществляться с задержками. Если такая активность заблокирована внутри синхронного процесса, все приложение должно ждать ответа. В асинхронном процессе, приложение может продолжить выполнять другую работу, которая не зависит от веб-ресурса, пока потенциально блокирующая задача завершится.");
await list; // ошибка "Cannot await List<int>"
Console.WriteLine("Массив заполнен: ");
for(int i = 0; i < list.Count; i++)
{
Console.Write(list[i] + " ");
}
}
static void Main()
{
doSomething();
Console.ReadLine();
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace oopLab5
{
public class RandomNumbers
{
public List<int> setArray()
{
Console.Write("Введите количество чисел в массиве: ");
int numbersCount = int.Parse(Console.ReadLine());
List<int> list = new List<int>();
Random rand = new Random();
for (int i = 0; i < numbersCount; i++)
{
list.Add(rand.Next(0, 100));
}
return list;
}
}
}await list; // ошибка "Cannot await List<int>"
Решение задачи: «Асинхронное программирование, Async и Await»
textual
Листинг программы
var fillArray = Task.Run(() => setArray());
Console.WriteLine("А пока массив заполняется рандомными числами вы можете задуматься о следующем:");
Console.WriteLine("Асинхронность необходима для действий, которые потенциально являются блокирующими, например, когда приложение получает доступ к вебу. Доступ к веб-ресурсам может быть медленным или осуществляться с задержками. Если такая активность заблокирована внутри синхронного процесса, все приложение должно ждать ответа. В асинхронном процессе, приложение может продолжить выполнять другую работу, которая не зависит от веб-ресурса, пока потенциально блокирующая задача завершится.");
var list = await fillArray;
Console.WriteLine("Массив заполнен: ");
for(int i = 0; i < list.Count; i++)
{
Console.Write(list[i] + " ");
}