У меня есть два процесса: один GUI, другой CUI.Каждый из них содержит простую службу WCF и связывается друг с другом по именным каналам.
В приложении с графическим интерфейсом есть две кнопки и индикатор выполнения.![enter image description here](https://i.stack.imgur.com/qs2ca.png)
Кнопка «Начать выполнение» сообщает CUI запустить задачу в течение 30 секунд.CUI сообщает о своем прогрессе обратно в графический интерфейс, поэтому индикатор выполнения может быть обновлен.Кнопка «Печать» указывает CUI напечатать строку.
Теперь, если мы несколько раз нажмем кнопку «Печать», все в порядке, CUI будет печатать строки: ![enter image description here](https://i.stack.imgur.com/Jo9s7.png)
Затем, если я нажму кнопку «начать работу», CUI напечатает прогресс на консоль и сообщит о ходе выполнения обратно в графический интерфейс, а индикатор выполнения будет обновлен: ![enter image description here](https://i.stack.imgur.com/TIJk8.png)
Затем я могу нажатьКнопка «Печать» еще пару раз, и она работает: ![enter image description here](https://i.stack.imgur.com/B3aP6.png)
Все это выглядит хорошо.
Но если я перезапущу эти два процесса и нажму кнопку «Начать выполнение»затем нажмите кнопку «Печать», затем оба процесса будут заморожены: ![enter image description here](https://i.stack.imgur.com/HJDHC.png)
Это выглядит как проблема с многопоточностью.
Так что, похоже, я начинаю с нажатия кнопки печатиКнопка, то все работает.Но если я начну с того, что нажму кнопку «Запустить запуск», то появится мертвая блокировка.Почему это так?
Вы можете скачать этот образец здесь: http://files.cnblogs.com/cuipengfei/SampleForStackOverflow.zip