变量 改变 触发事件,我写的错在哪里啊?

ttiimm11 2010-12-07 08:22:59
我想实现当变量发生改变的时候,触发事件(该事件要刷新界面,我不想频繁的刷新界面)
我的变量是这样定义的

private string str;
private string Str
{
get
{
return str;
}
set
{
str = value;
eventChange();
}
}


事件代码,getvalue()是另一线程采集的端口数据

private void eventChange()
{
//刷新界面数据
}

private void mainEvent()
{
if (Str != getvalue())
{
Str = getValue();
}
}


我不知道我的代码错在哪里,eventChange()就在一开始执行一次,后来就算getvalue()改变了,Str也改变了,可eventChange()事件再也不执行了。郁闷,特来请教。谢谢
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttiimm11 2010-12-07
  • 打赏
  • 举报
回复
是我说错了,不应该是事件,是函数
机器人 2010-12-07
  • 打赏
  • 举报
回复
定义成 event 的叫事件,看你现在的代码里,也没有出现事件呀。

就是一堆方法调用。
ttiimm11 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qqamoon 的回复:]

还有在属性赋值时,建议这样写
C# code

set
{
if (str != value)
{
str = value;
eventChange();
}
}
[/Quote]
我最开始就是这样写的,我把断点设在SET上,可这个断点只跑进来过一次,就是在最开始的一次,以后,Str改变了,可没有经过set
ttiimm11 2010-12-07
  • 打赏
  • 举报
回复
回楼上,交叉数据访问?线程安全调用,你的意思是我应该用委托?
回1楼,值可能不同,也可能相同。
回2楼,你要看什么事件?
龍过鸡年 2010-12-07
  • 打赏
  • 举报
回复
线程和程序产生了交叉数据访问。

在 MSDN 搜索 "对 Windows 窗体控件进行线程安全调用",对你应该有些帮助。

还有在属性赋值时,建议这样写

set
{
if (str != value)
{
str = value;
eventChange();
}
}
机器人 2010-12-07
  • 打赏
  • 举报
回复
没看到事件。。。。
king_827 2010-12-07
  • 打赏
  • 举报
回复
选调试getvalue()返回值是不是每次都不同.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧