0

我的项目中有两个不同的类,它们负责模块的一些打开和执行,并从其他一些解决方案中调用。我的解决方案不支持多线程。

现在我的问题是——我有一个类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()方法执行。

提前致谢

4

0 回答 0