У меня есть приложение WPF, которое раньше отключалось через Environment.Exit
. Поскольку это вызвало проблемы с моими автоматическими тестами пользовательского интерфейса, я изменил существующее приложение на Application.Current.ShutDown
.
Это работает нормально, за исключением того, что есть поток, ожидающий импульса (Monitor.Wait
), который поддерживает работу процесса, поскольку он больше никогда не получает импульс.
Я думал, что исправить это будет несложно, но с точки, где мое приложение выходит (Application.Current.ShutDown
), довольно сложно получить ссылку на объект, который содержит ожидающий поток (чтобы заставить его пульсировать, чтобы он мог выход).
Я попытался найти подходящий ответ в Google, но пока не очень повезло. Есть ли "легкий выход" из этого? Или мне уже начинать рефакторинг? :)
Некоторые фрагменты:
Тема создается так
workerThread = new Thread(Worker) { Name = logName, IsBackground = true};
В методе Worker
вызывается Monitor.Wait
while ((action = GetNextTask(out task)) == ProductPreparationAction.None)
{
Monitor.Wait(preparationTasks);
}