如何等待变量?

时间:2014-05-20 21:50:57

标签: delphi

如何等待变量在线程中更改?例如,我想等一个数字来改变。那么不是使用Sleep()还有什么呢?

while SomeVariable > 0 do
Sleep(1);

1 个答案:

答案 0 :(得分:19)

如果您希望在发生变化时收到通知,可以将一些封装成为您的朋友。

如果SomeVariable是变量而不是属性,请将其声明更改为const。这将破坏写入它的所有代码。这是一件好事;编译器为您找到它而不是您必须搜索它。然后创建一个名为SetSomeVariable的过程(暂时将其留空)并更改损坏的代码以调用它。当一切都要编译时,将SomeVariable更改回变量,实现setter例程,如果可能的话,封装SomeVariable,这样在没有调用新函数的情况下,任何东西都无法直接设置它的值。 (如果它是一个属性,你可以通过声明一个setter来更简单地做到这一点。)

一旦你有一个设置其值的函数,你就可以在这个过程中引入新的效果,例如让它设置TSimpleEvent的信号。 (或者,如果你想要更复杂,如果新值<>旧值,请设置信号。)

不要睡觉,而是让您的代码WaitFor成为事件。记得以后重置它!