我是C#异步/等待功能的新手,经过研究,我认为我已经很好地理解了这些关键字想要完成的工作。但是我想到这个问题:有些事情使async / await使使用Task类型无法完成的事情成为可能?考虑以下示例:
static async Task<int> jobAsync()
{
// I could be writing here "await someTask()"
await Task.Delay(2000);
return 1;
}
static async void simpleAsync()
{
int i = await jobAsync();
Console.WriteLine("Async done. Result: " + i.ToString());
}
static void simpleTask()
{
var t = Task.Run(() => {
//I could be writing here "return someTask();"
Thread.Sleep(2000); return 1; });
t.ContinueWith(tsk => { Console.WriteLine("Task done. Result: " + tsk.Result); });
}
Run Code Online (Sandbox Code Playgroud)
现在,两个函数“ simpleTask()”和“ simpleAsync()”给出相同的结果,例如,如果调用Main方法:
static void Main(string[] args)
{
simpleTask();
//simpleAsync(); …Run Code Online (Sandbox Code Playgroud)