是否有任何助手类为我不断监视一个值,以便在值更改时触发事件
本文关键字:一个 事件 任何助 监视 是否 | 更新日期: 2023-09-27 17:58:02
是否有C#语言提供的某种帮助程序,如下面的ChangeMonitor类,可以为我监视更改?
bool errorHappened = false;
...
...
// ChangeMonitor monitors the change of another object for me and run my lambda expression if value changed
var cancellationTokenSource= new CancellationTokenSource();
ChangeMonitor changeMonitor = new ChangeMonitor(errorHappened, () =>
{
// Stop my stuffs
cancellationTokenSource.Cancel();
}
task.Wait(cancellationTokenSource.Token);
我目前所做的变通办法是使用下面这样的计时器。
System.Timers.Timer checkErrorTimer = new System.Timers.Timer(1000);
checkErrorTimer.Elapsed += (i, j) =>
{
if (errorHappened)
cancellationTokenSource.Cancel();
};
checkErrorTimer.Start();
否,并且给定属性返回的值可能是随机的,基于计算,以及更典型的支持变量,只有两种解决方案接近您所描述的:
- 创建一个轮询类。每隔x个刻度,它就会检查一个属性的值。这可以让您知道值已经更改,但代价是运行大量(根据属性的不同,这实际上可能会更改值)
- 让您的属性实现INotifyPropertyChanged然后订阅PropertyChanged事件。这将完全按照您的意愿进行,但您必须控制类源代码