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