如何确保同时调用2个方法

时间:2015-03-11 10:03:08

标签: c# concurrency

我为这个混乱的标题道歉,但我不确定如何正确表达我的问题。

我有以下课程

    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();
            }

我是否面临着这样一个问题:在第一个方法被调用时,因为它正在返回,它可能会被再次调用,而同时另一个线程正在调用更新方法?

如果是这种情况,解决此问题的正确做法是什么?

由于

0 个答案:

没有答案