一方面,我想用' Lock()'来锁定一些关键部分,但另一方面我想让某个按钮的点击暂停一个线程的可能性(我知道不应该使用'暂停'功能,但我别无选择。)
可能其他线程想要进入这个关键部分。 如何防止DEADLOCK?
如果'暂停'函数抛出异常(比如' Abort()'函数),没有问题。 显示器最终在'中被释放。声明......
例如:
static List<Thread> threadList = new List<Thread>();
public static List<Thread> ThreadList
{
get { lock (_locker) { return SaveLists.threadList; } }
set { lock (_locker) { SaveLists.threadList = value; } }
}
如果我暂停了锁定对象的线程,并且在另一个线程之后需要设置/获取list =&gt; DEADLOCK。
答案 0 :(得分:1)
事实证明,解决方案太简单了! 我很惊讶自己以前没有想过......
负责tosuspend其他线程的线程应首先锁定临界区,从而有效地确保其他线程不在内。
我知道我不应该使用'暂停'功能,但我被要求使用它,我别无选择。
太糟糕了,不是得到适当的回应,我的分数减少了,答案如下:“你必须永远不要使用这个功能”,尽管我写道我必须使用它,尽管涉及的危险,我知道一般情况下禁止使用它。
我很失望,我认为他不适合论坛。