如何等待变量在线程中更改?例如,我想等一个数字来改变。那么不是使用Sleep()
还有什么呢?
while SomeVariable > 0 do
Sleep(1);
答案 0 :(得分:19)
如果您希望在发生变化时收到通知,可以将一些封装成为您的朋友。
如果SomeVariable
是变量而不是属性,请将其声明更改为const
。这将破坏写入它的所有代码。这是一件好事;编译器为您找到它而不是您必须搜索它。然后创建一个名为SetSomeVariable
的过程(暂时将其留空)并更改损坏的代码以调用它。当一切都要编译时,将SomeVariable
更改回变量,实现setter例程,如果可能的话,封装SomeVariable
,这样在没有调用新函数的情况下,任何东西都无法直接设置它的值。 (如果它是一个属性,你可以通过声明一个setter来更简单地做到这一点。)
一旦你有一个设置其值的函数,你就可以在这个过程中引入新的效果,例如让它设置TSimpleEvent
的信号。 (或者,如果你想要更复杂,如果新值<>旧值,请设置信号。)
不要睡觉,而是让您的代码WaitFor
成为事件。记得以后重置它!