В моем проекте есть два разных класса, которые отвечают за открытие и выполнение модулей и вызываются из другого решения. Мое решение не поддерживает многопоточность.
Теперь моя проблема - у меня есть один класс CPMModule.cs
public bool QueryLinkActivate()
{
while (true)
{
if (!_cpmBridge.isBlocked() && !_cpmBridge.isClosing())
{
return true;
}
}
}
Этот метод вызывается для проверки, когда Окно модуля готово обрабатывать новый вызов с помощью проверочных значений _cpmBridge.isBlocked()
и _cpmBridge.isClosing()
, и когда оно возвращает true, открывается новый модуль.
У меня есть другой метод в другом классе CallListenerClass.cs -
public void stopModal()
{
_cpmModule.StopModal();
}
Этот метод отвечает за закрытие любого всплывающего окна, открытого на экране, и связанного с ним выполнения.
Теперь моя проблема похожа на - Открывается всплывающее окно на моем экране и когда я закрываю это всплывающее окно, запускается выполнение этого метода stopModal()
, и иногда приходит новый вызов для метода QueryLinkActivate()
.
Здесь в этом случае stopModal()
выполнение не выполняется завершается, и выполнение переключается на другой метод, т. е. QueryLinkActivate()
, в котором есть al oop, который постоянно проверяет, свободен ли модуль или нет, для которого stopModal()
выполнение должно быть завершено, что никогда не завершается из-за до QueryLinkActivate()
пока l oop. И мое приложение переходит в состояние «Не отвечает», которое затем может быть закрыто только диспетчером задач.
Может ли кто-нибудь помочь мне справиться с этой ситуацией? Как выполнить stopModal()
выполнение, а затем возобновить QueryLinkActivate()
выполнение метода.
Заранее спасибо