我为这个混乱的标题道歉,但我不确定如何正确表达我的问题。
我有以下课程
public class MyClass
{
private static volatile Boolean messageShown = false;
private static readonly object mutex = new Object();
public static DialogResult ShowMessage()
{
lock (mutex)
{
if (!messageShown)
{
DialogResult result = MessageBox.Show("There is a connectivity issue",
"Application Error",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
messageShown = true;
return result;
}
return DialogResult.Ignore;
}
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static void UpdateMessageShownToFalse()
{
messageShown = false;
}
}
}
这在多个地方被调用如下;
if MyClass.ShowMessage() == DialogResult.OK)
{
MyClass.UpdateMessageShownToFalse();
}
我是否面临着这样一个问题:在第一个方法被调用时,因为它正在返回,它可能会被再次调用,而同时另一个线程正在调用更新方法?
如果是这种情况,解决此问题的正确做法是什么?
由于