如何获取从异步 Task<string> function() 返回的值;在 C# 中

Iqr*_*ra. 2 .net c# multithreading asynchronous

我有一个异步方法,我想在它完成后从同一个方法中获取一条消息。

下面是代码

 static async Task<string> pizza()
        {
            await Task.Delay(10);
            for (int i = 0; i < 100; i++)
            {
                //Console.WriteLine("Processing pizza...");
            }
            return "Pizza is ready";

        } 
Run Code Online (Sandbox Code Playgroud)

我想在呼叫点收到这条消息

....... code 
Task t=null;
            switch (option)
            {
                case 1:
                    {

                        await Task.Run(() =>
                        {

                         t=pizza();// asynchronous method  

                        });
                        Console.WriteLine(t.ToString());
                    }
                    break;
 .... other code
Run Code Online (Sandbox Code Playgroud)

Aus*_*ley 7

你需要Task.Run零件吗?你可以await在异步方法中:

var result = await pizza();

Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

你也可以调用结果:

var result = pizza().Result;
Run Code Online (Sandbox Code Playgroud)


Tvd*_*de1 5

你可以

var pizza = await pizza();
Run Code Online (Sandbox Code Playgroud)

或者

var pizza = pizza().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)