我们有一个系统以单线程语言(DataFlex)运行,并通过COM调用C#代码。一个这样的调用需要几秒钟才能完成,并且能够让C#方法在后台完成而不会阻塞UI是非常好的。通过COM从单线程编程语言运行C#异步方法
虽然我的第一次尝试没有在后台完成,但AsyncDbLoad似乎必须在将控制权返回给DataFlex之前完成其工作。
private async Task DbLoad()
{
LongRunningMethod();
}
public async Task AsyncDbLoad()
{
await DbLoad();
}
我在做什么错?甚至有可能使用异步等待来做到这一点?不是,我该怎么办?
您使用的是什么版本的dataflex? – AlexDev
本身在方法上抛出'async Task'什么也不做。你必须在你的函数中有一个'await'以获得实际的异步行为。 –
@AlexDev我在版本15.1中测试了它,但它应该与版本19中的版本相同 –