Я изучаю асинхронное программирование, я не уверен, что я иду в правильном направлении. Я хочу вызвать несколько методов async, но из того, что я прочитал, asyn должен начинаться с верхнего уровня, до нижнего уровня. Но на верхнем уровне, когда я делаю метод asyn, жалоба компилятора не может ждать строки.asyn пример вызова нескольких методов
public static async void Method()
{
var classdemoAsyn = new DemoAsyn();
var t = await classdemoAsyn.DoSomeImportantWork("Start ").Result;
}
public class DemoAsyn
{
public async Task<string> DoSomeImportantWork(string strDoSomeWork)
{
strDoSomeWork = strDoSomeWork + " (1) Enter => so some important work";
Console.WriteLine("**********Enter => so some important work******");
var t = await SomeComplexOperation(strDoSomeWork);
Console.WriteLine("***********End Do some important work***********");
return t;
}
public Task<string> SomeComplexOperation(string StrDoSomeComplexWork)
{
string str =StrDoSomeComplexWork + "Enter => very very complex work";
Console.WriteLine(str);
return Task.Factory.StartNew(() => {return str; });
}
}
Какое приложение это (UI или ASP.NET)? Кроме того, ваша «работа» связана с процессором или вводом/выводом? –
Вы получаете ошибку компилятора, потому что вы «ожидаете» результата «Задача», а не самой задачи. Удалите '.Result', и эта ошибка должна исчезнуть, хотя есть и другие проблемы с вашим кодом. –
это небольшое консольное приложение, @StephenCleary. Я просто начинаю изучать async все, что хочу достичь, написать несколько методов asyn start от верхнего уровня до нижнего уровня. – Milas