多个await在异步方法中

jip*_*pot 1 c# asynchronous async-await xamarin

我有一个方法

public async void getResult ()
Run Code Online (Sandbox Code Playgroud)

这取决于2等待它内部的响应.

这是第一个:等待:

await System.Threading.Tasks.Task.Factory.StartNew (() => { 
                    try 
                    {
                        scannedItem = getScannedItem(); 
                    }
                    catch (Exception exe) 
                    { }
Run Code Online (Sandbox Code Playgroud)

第二个等待等待从上面使用scanningItem的调用

await System.Threading.Tasks.Task.Factory.StartNew (() => { 
                    try
                    {
                        getResultsScannedItem = results(ScannedItem); 
                    }
                    catch (Exception exe) 
                    { }
Run Code Online (Sandbox Code Playgroud)

我想让这一切都从一个按钮执行.但是,第二个等待永远不会被执行.我可以在方法中有两个等待吗?有点担心如何去做这件事.

sca*_*tag 11

是的,你可以在一个方法中有多个等待..但这些看起来不像是等待的任务..你只是用一个任务工厂包装它们.

您似乎也在吞咽代码中可能发生的任何异常.

尝试更改为:

await Task.Run(() => scannedItem = getScannedItem());

await Task.Run(() => getResultsScannedItem = results(ScannedItem));
Run Code Online (Sandbox Code Playgroud)

使用调试器逐步执行它,看看它是否正在运行或发生异常.

  • 我还要添加一个关于void返回类型的注释.除了事件处理程序之外,您不应该在异步方法上返回void.`public async void getResult()`应该成为`public async Task getResult()` (2认同)