首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从单线程编程语言通过COM运行C#异步方法

从单线程编程语言通过COM运行C#异步方法
EN

Stack Overflow用户
提问于 2017-10-10 13:49:08
回答 1查看 75关注 0票数 0

我们有一个以单线程语言(DataFlex)运行的系统,并通过COM调用C#代码。一个这样的调用需要几秒钟才能完成,如果能够让C#方法在后台完成而不阻塞UI,那就太好了。

不过,我的第一次尝试并没有在后台完成-- AsyncDbLoad似乎必须在将控制权返回到DataFlex之前完成它的工作。

代码语言:javascript
复制
  private async Task DbLoad()
  {
     LongRunningMethod();
  }

  public async Task AsyncDbLoad()
  {
     await DbLoad();
  }

我做错了什么?甚至可以使用异步等待来完成这个任务吗?不,我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 14:08:51

我不熟悉这个版本的DataFlex,但我不认为使用异步等待会对您有所帮助。我会把它分成两个请求:

1:int StartDbLoad():启动操作,返回一个操作id。

2:Result CheckResult(int operationId):检查一个结果是否可用并检索它。

在C#端,您可以使用Task在单独的线程中处理请求,并将结果保存在Dictionary<int, Result>中。然后,您必须使用DataFlex中的任何可用功能来轮询结果,同时保持UI响应性,例如计时器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46668486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档