Что может привести к зависанию исполняемого файла, вызываемого скриптом powershell, при выходе - PullRequest
0 голосов
/ 20 мая 2011

Я отлаживаю особенно странную проблему ...

В рамках набора тестов моей команды мы запускаем скрипт powershell, который вызывает исполняемый файл, написанный мной на C #.

EveryВо вторник, во вторник, исполняемый файл будет зависать бесконечно, пока мы не убьем процесс.В большинстве случаев он работает просто отлично, и я не получил его для воспроизведения.

Любопытно, что этот exe зависает после того, как он сделал всю свою работу.Он выводит последнюю строку данных и основной поток завершается.В этом процессе нет многопоточности, процессор имеет значение 0%, а количество потоков - 1.

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

Мне не нужно однозначное «это проблема», но я понятия не имею, что может вызвать такое поведение.Если бы вы могли ответить какими-либо теориями о том, почему это будет происходить (независимо от того, как далеко), это было бы здорово.

Информация о версии

  • ОС: Windows 2008 R2
  • Powershell: v2 (поставляется с R2)
  • .NET: v4

Ответы [ 2 ]

1 голос
/ 24 мая 2011

У меня такое поведение на одной из моих консольных программ "C". Это хорошо работало, началось через «CMD.EXE», но когда я использую его через «POWERSHELL.EXE», оно зависает (систематически) в конце выполнения. В этом коде есть цикл объединения клавиатуры (while (! _kbhit()), и в данный момент я решаю проблему, потребляя (getch()) нажатие клавиши, которое запустило последний цикл. Я точно не понимаю, почему.

В скрипте Powershell на результат исполняемого файла влияет переменная.

1 голос
/ 23 мая 2011

Хех, это стоит попробовать. Есть

Console.ReadLine()

где-нибудь в конце какой-то логической строки?

...