【问题标题】:Webservice : AsyncCall finished : But WaitOne() still waitingWebservice:AsyncCall 已完成:但 WaitOne() 仍在等待
【发布时间】:2011-12-13 01:36:02
【问题描述】:
  1. 我正在通过命令行 Exe 调用 WebService 方法。
  2. 此方法调用是异步调用,我在调用后使用 WaitOne。
  3. 我正在完成的方法中执行 ManualRest.Set()。

在异步方法在 10-20 分钟内返回的情况下,上述设置在 99% 的情况下都能正常工作,

出现问题 当异步调用需要更多时间(例如 2-3 小时)时,WaitOne() 之后的代码不会被执行。

我在 waitone() 之前和之后以及 Completed 事件中都在写日志,但是在 3 小时的异步调用之后,控件似乎没有恢复。

上面的任何帮助/指针...

谢谢。

【问题讨论】:

  • 请发布一些代码,而不是仅仅描述它。细节很重要,当您用自己的话描述代码时,它们就会丢失。

标签: c# multithreading asynccallback manualresetevent waitone


【解决方案1】:

你确定 Set 被调用了吗?你在用System.Diagnostics.Process吗?请在您的问题中发布您如何使用该流程的代码。

使用进程时,产生死锁的风险非常高,尤其是当您使用 MSDN 上的代码示例时,这些示例向您展示了如何同步读取 StandardIn 和 StandardOut。

尝试使用异步读取方法来避免死锁。

【讨论】:

  • 感谢您的快速回复!是的,我正在使用 System.Diagnostics.Process ,到目前为止没有使用 BeginOutputReadLine ,将尝试...
猜你喜欢
  • 1970-01-01
  • 2010-09-29
  • 2021-07-08
  • 2015-10-28
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 2014-10-12
相关资源
最近更新 更多