Мне не удается решить, как заблокировать приложение из раздела кода, пока оно ожидает ответа от внешней программы
Я использовал Synclock
в разделе кода с объектом Me
в выражении. В этом Synclock
я вызываю переопределенный метод ShowDialog
диалогового окна, которое имеет параметр тайм-аута, но возвращает значение из базового вызова функции ShowDialog
после настройки таймера. Работает так.
SyncLock Me
Dim frmDlgWithTimeout As New frmDlgWithTimeout ' dialog box with overridden ShowDialog '
Dim res As DialogResult = frmDlgWithTimeout.ShowDialog(10 * 1000) ' 10 sec timeout '
End SyncLock
Теперь внешние программы могут вызывать события, которые приводят мое приложение к этому Synclock
, но это не мешает ему войти в него, даже если функция ShowDialog
не вернула значение (и, следовательно, я думал, что сохранить раздел кода заблокированным).
В программе есть только один экземпляр объекта, который используется для блокировки.
Ваша помощь очень ценится.