我有一个非常密集的任务,我可以在一个函数的开头运行,但我需要在函数的后面一点得到结果。
该功能需要几秒钟才能完成,没有理由不让任务早点运行。在两者之间进行其他处理,然后等待更短的时间完成。
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/