【发布时间】:2008-10-28 07:59:00
【问题描述】:
在将新信息与旧信息进行比较后,我有一个将信息输入对象的应用程序。 它类似于
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,确实是这样,但我无法判断,因为在进行任何有意义的检查之前比较就停止了。
好的,我已经解决了问题,显然我的问题是错误的,问题出在另一个地方。 感谢您的帮助,问题可能已关闭。
【问题讨论】:
标签: c# .net properties