我有一个继承自的类,但我无法访问基类。我正在覆盖该基类的一个方法,该方法不是异步的,但我需要它来调用我创建的异步方法。像这样:
public class OverridingClass : BaseClass
{
public override bool TestMethod()
{
var res = engine.DoAsyncFunction().Result;
//do stuff with res value
}
}
Run Code Online (Sandbox Code Playgroud)
最好使用这种方法,在其中取出“结果”值,还是应该向引擎添加一个新的同步方法并完全忽略它的异步功能,就像这样?
public class OverridingClass : BaseClass
{
public override bool TestMethod()
{
var res = engine.DoFunction();
//do stuff with res value
}
}
Run Code Online (Sandbox Code Playgroud)
或者还有什么我可以完全对重写的函数做的事情来使它异步?如果我尝试使用重写的方法:
public async override Task<bool> TestMethod()...
Run Code Online (Sandbox Code Playgroud)
然后我会收到一个编译错误,说该方法与基本签名不匹配。
Task.Run()
如果您希望它被异步调用,您可以将它包装在以下类似中:
public override bool TestMethod()
{
var task = Task.Run(async () => {
return await engine.DoAsyncFunction();
});
var Result = task.Result; // use returned result from async method here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6233 次 |
最近记录: |