等待变量改变

时间:2015-06-21 14:36:30

标签: c# multithreading mono

我有一个显示窗口的方法,然后返回单击按钮的值。我所做的是,当我单击按钮时,我更改了一个变量,然后返回变量。我需要的是暂停方法直到变量被更改。

我统一编程游戏,它使用单声道。

代码:

public virtual Buttons Execute(){

        this.holder.SetActive(true); //Set the window active

        // Here wait for the user to click a button

        return clicked;//Returns the button clicked.
    }

1 个答案:

答案 0 :(得分:0)

处理用户界面的代码是事件驱动的,因此明智的做法是使用事件而不是像你尝试的那样使用方法。

可能创建一种以这种方式工作的方法,但您必须创建自己的消息泵,在您等待时运行:

public virtual Buttons Execute(){

    this.holder.SetActive(true); // Set the window active

    clicked = null; // Set the state as undetermined

    while (clicked == null) { // Wait until it is set

      Application.DoEvents(); // Process messages
      Thread.Sleep(10); // Wait for a while

    }

    return clicked; // Returns the button clicked.
}

您可以在问题Use of Application.DoEvents()中阅读有关使用DoEvents这种方式的陷阱的解释。