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