试图进入C#异步编程。我发现很难理解这个异步部分,主要是因为每当我看到使用Async / Await时,await部分总是附加到来自任何API的Async操作,但是如果我需要等待我的话怎么办?自己的任务。我假设制作一个返回Task的方法足以拥有异步方法,因此我可以等待它。
在接下来的代码中,有些东西正在逃避我的理解,而且我很确定,如果有人回复,我会最终进入它。代码如下
static void Main(string[] args)
{
runAsync();
}
static async void runAsync()
{
Console.WriteLine("KickOff");
int a = await processAsync();
Console.WriteLine("Result:{0}", a);
Console.WriteLine("Done");
Console.ReadLine();
}
static async private Task<int> processAsync()
{
Task<int> a = func();
int b = await a;
//Console.WriteLine("Result:{0}", b);
return a.Result;
}
static private Task<int> func()
{
int a = 0;
Task<int> f = Task<int>.Run(() =>
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(1000);
a++;
}
return a;
});
return f;
}
如果我在方法int b = await a;
的语句processAsync()
中断点,我可以看到任务a的状态正在运行,结果是&#34; Not Yet Computed&#34;但是当我点击 F10 来等待结果时,程序就会执行其他任何操作。我做错了什么?