我的项目中有两个不同的类,它们负责模块的一些打开和执行,并从其他一些解决方案中调用。我的解决方案不支持多线程。
现在我的问题是——我有一个类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()
有一个循环不断检查模块是否空闲,stopModal()
执行需要完成,由于QueryLinkActivate()
while 循环而永远不会完成。我的应用程序进入无响应状态,然后只能由任务管理器关闭。
有人可以帮助我如何处理这种情况吗?我怎样才能完成stopModal()
执行然后恢复QueryLinkActivate()
方法执行。
提前致谢