【问题标题】:Timing issue in C# servicesC# 服务中的计时问题
【发布时间】:2016-03-08 05:07:06
【问题描述】:

我有一段代码调用类似的网络服务

iResult = Proxy.Call(request, endpoint);

我面临下面给出的问题。

服务修改数据库。但是反映到数据库中需要一些时间。在这段时间内,我的执行流程向前推进,我留下了旧数据,实际数据稍后会反映到数据库中。我该如何解决这种情况。

【问题讨论】:

  • 你能提供一些来自网络服务 ImportPendingUtilityBills 方法的代码吗?
  • 我假设 ImportPendingUtilityBills 在单独的线程上运行?你能打电话给 Thread.Join 吗?
  • @Steve 是的,它必须在单独的线程上。它在远程机器上运行。
  • iResult 是什么类型?如果是IAsyncResult,您可以等待。
  • 您需要更具体。您是否可以控制 ImportPendingUtilityBills 线程?您可以在等待 ImportPendingUtilityBills 时阻止执行吗?您是否需要 UI 在服务运行时做出响应? ImportPendingUtilityBills 是更新远程数据库还是本地数据库?等

标签: c# web-services timing


【解决方案1】:

您需要使用 await 方法进行此调用。

仅供参考,您可以阅读以下内容

Understand Await and Async

【讨论】:

  • await 将如何解决这个问题?
  • @Puneet 我无法使用 await 调用 Web 服务。 :( 它不是那样设计的。
  • @SarveshMishra 您可以查看随附的链接。 await 让执行等到控件返回,这就是这里需要做的事情。
  • @MadhurMaurya 你可能需要修改它,否则你可以使用你的线程睡眠功能。
  • @PuneetGoel Await 会等到控制权返回,但根据这里的问题,ImportPendingUtilityBills 方法在更新反映在数据库中之前返回。 ImportPendingUtilityBills 中可能存在类似触发和忘记样式异步调用的情况,因此控件返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多