在将新信息与旧信息进行比较后,我有一个将信息输入对象的应用程序。它就像
set
{
oldval=_value;
_value=value;
if (some comparison logic)
raiseEvent();
}
这一切都发生在后台线程上,处于无限循环中,间歇性休眠 100 毫秒。真正奇怪的部分是它第一次工作,比较逻辑变为真,并且引发了事件。之后,信息不断流动,不断进入对象,我知道这一点是因为我设置 MessageBoxes 一直显示新旧值,但它好像以某种方式绕过了 set 子句!我在子句的开头设置了一个消息框,它只是没有弹出!这真的很奇怪,因为我确信该值会不断更新。
有什么想法吗?
是的,我知道,但不幸的是,我无法展示更多内容......让我再次尝试解释整体结构:我有一个单独的后台线程运行一个无限循环。这个循环不断地从 Data 对象中提取数据,该对象由另一组线程更新。当然,所有这些都与 Monitor.Enter 和 Exit 同步。然后将从 Data 对象中提取的数据输入到 Comparer 对象中。
while(true)
{
Thread.Sleep(100);
Monitor.Enter(Data);
Comparer.Value = Data.Value;
Monitor.Exit(Data);
}
Comparer.Value 是我在第一篇文章中提到的属性。这真的很奇怪,因为我在循环结束时设置了一个 MessageBox:
MessageBox.Show(Comparer.Value + " - " + Data.Value);
并且值确实更新了,它似乎以某种方式绕过了 set 子句,这是不可能的......这真的很奇怪。
Rob,循环不做任何检查,它只是将信息流模拟到 Comparer.Value 中;它的 set 子句包含比较逻辑。
bh213,我很漂亮,但我不知道,因为比较在任何有意义的检查完成之前就停止了。
好吧,我已经解决了问题,显然我的问题是错误的,问题出在另一个地方。感谢所有帮助,问题可能已关闭。