(C# Value Doesn't Change) 从静态回调方法修改静态变量

(C# Value Doesnt Change) Modifiying Static Variables from Static Callback Method

您好,请问如何从静态回调中修改值静态变量,并重新读取值。当静态变量的值发生变化时,我需要在循环时停止。这是我的代码。

问题是 stepControlEx 的值保持不变,当另一个回调 运行 再次修改值时它不会改变。它使我的循环卡住无法结束。

感谢您的帮助

Private static int stepControl = 0;
Private static int stepControlEx
{
  get { return stepControl;}
  set { stepControl = value;}
}

Private static void CallbackHandle (Object object)
{
  If (object == 0)
  {
    stepControlEx = 0;
    While (stepControlEx == 0)
    {
      //do events
      //stop when stepControl Change
    }
  }
  Else If (object == 1)
  {
    stepControlEx = 1;
    While (stepControlEx == 1)
    {
      //do events
      //stop when stepControl Change
    }
  }
}

已编辑(已解决): 我完全改变了算法并使用线程来处理队列中的数据。回调函数仅将输入入队到队列和线程将输入出队到处理,现在步骤控制不需要作为全局变量。谢谢

您的代码看起来不明确。但我对你的代码只有一个评论。如果您有一个静态变量并在多个线程之间共享,则需要在更改变量时锁定该变量。 我认为你会遇到死锁,这就是循环永远不会结束的原因。

任何时候在多线程环境中分配任何静态变量。你需要这样做:

lock (new object())
        {
            stepControlEx = 0;
        }