c# - 开始任务,稍后等待完成

标签 c# asynchronous async-await task

我有一个非常密集的任务,我可以在一个函数的开头运行,但我需要在函数的后面一点得到结果。

该功能需要几秒钟才能完成,没有理由不让任务早点运行。在两者之间进行其他处理,然后等待更短的时间完成。

analyzer.Parse()Task<IAnalyzerResult> .

analyzer = new ExprAnalyzer(expr);
//start the task
analyzer.Parse().Start();

// [...] Do other stuff

// Now I need analyzer.Parse() to have finished
IAnalyzerResult res = await analyzer.Parse() //this obviously doesn't work.

// [...] Process the result

我如何开始一项任务,然后等待它在另一个时间点完成。只需调用 await analyzer.Parse();不会成功的。

几年前我在某个地方读到过如何做,但我再也无法在 Google 和 Stackoverflow 上找到任何内容。

最佳答案

获取返回的任务:

Task<IAnalyzerResult> t = analyzer.Parse();

然后,等待结果:

IAnalyzerResult res = await t;

关于c# - 开始任务,稍后等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58937433/

相关文章:

c# - 什么是泛型中的 <in T> 和 <out T>

c# - 代码注释 : Do you put your code comments on Interfaces or on Concrete classes, 或两者?

Angular - 在模板中多次使用异步管道时可观察到......好的做法还是坏的?

javascript - 如何在 Angularjs 中读取工厂中的文件数组?

c# - 从 WEB API Controller 返回异步方法中的 Void

c# - Newtonsoft 从 JSON 路径更新 JObject?

vb.net - 未捕获错误(AsyncCallback)

javascript - 从 Firebase Firestore 异步返回数据

javascript - 嵌套的 forEach 循环存在异步问题,每次以不同的速率完成

c# - 将 await 与动态类型一起使用时的行为不一致