有什么方法可以解决这样的问题,即两个同时调用两个不同的类互相等待

时间:2020-02-20 06:31:25

标签: c# multithreading deadlock contextswitchdeadlock

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

现在我的问题是- 我有一类 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(),其中存在一个循环,该循环不断检查模块是否空闲{ {1}}执行需要完成,由于stopModal() while循环而无法完成。而且我的应用程序进入“无响应”状态,然后只能由任务管理器关闭。

可以帮我如何处理这种情况?如何完成QueryLinkActivate()执行,然后恢复stopModal()方法执行。

预先感谢

0 个答案:

没有答案