开始任务,稍后等待完成

时间:2019-11-19 15:24:14

标签: 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上找不到任何东西。

1 个答案:

答案 0 :(得分:6)

获取返回的任务:

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

然后,等待其结果:

IAnalyzerResult res = await t;