Webservice: AsyncCall закончил: но WaitOne() все еще ждет

  1. Я вызываю метод WebService через командную строку Exe.
  2. Этот вызов метода - Async Call, и я использую WaitOne после Call.
  3. Я делаю ManualRest.Set() в завершенном методе.

Приведенная выше настройка работает нормально в 99% случаев, когда асинхронный метод возвращается с 10-20 минутами,

Проблема возникает, когда асинхронный вызов занимает больше времени, например, 2-3 часа, после чего код после WaitOne() не выполняется.

Я пишу журналы до и после waitone(), а также в событии Completed, но управление не возвращается после 3 часов асинхронного вызова.

Любая помощь / указатель на выше...

Благодарю.

1 ответ

Решение

Вы уверены, что Сет вызывается? Ты используешь System.Diagnostics.Process? Пожалуйста, опубликуйте код того, как вы используете процесс в своем вопросе.

При использовании процесса существует чрезвычайно высокий риск создания взаимоблокировки, особенно если вы используете примеры кода в MSDN, которые показывают вам, как читать из StandardIn и StandardOut синхронно.

Попробуйте вместо этого использовать асинхронные методы чтения, чтобы избежать тупиковой ситуации.

  • Process.BeginOutputReadLine
  • Process.BeginErrorReadLine
Другие вопросы по тегам