为什么我的Async c#代码永远不会完成运行并且没有任何错误就退出了?

时间:2015-10-23 09:19:33

标签: c# .net asynchronous async-await

试图进入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 来等待结果时,程序就会执行其他任何操作。我做错了什么?

0 个答案:

没有答案