智能充电器上位机问题请教: C# 中夸线程调用变量怎么做? [已经解决]
简单点说就是在主窗体中和定时器两个线程中我都要用到一个变量, 怎么处理? MAP -> 阻塞 -> 读取or设置 -> 解除阻塞 【1楼】 aleyn 煮茶村长谢谢村长, 基本思路明白了, 基本就是和操作系统中处理临界状态的办法一样, 我去找找具体实现办法. 若是简单变量(32位系统中不足32位的变量,或64位系统中不足64位的变量),其实不必先行阻塞,因为那个最终是原子操作 【3楼】 watercat
明白了, 你说的原子操作, 意思是说是单指令周期的操作.
谢谢.
那么我知道我的问题所在了, 我的问题不是出在跨线程全局变量操作, 而是夸线程控件属性操作.
继续请教下. 那确实需要阻塞机制
http://msdn.microsoft.com/zh-cn/library/ms173179(VS.80).aspx
技术实现的方法说的应该很明白了,至于阻塞机制本身的工作原理和使用逻辑,那个是多线程本身的知识范畴,与C#无关…… 话又说回来,我个人以为,其实C#并不是一个良好的上位机软件开发环境…… 谢谢 watercat ,我已经解决了问题.
我的问题出在使用了 系统时钟的定时器, 我现在自己定义了个定时器, 就把这个问题解决了.
我分析下来是这样的:
系统定时器线程和我的 form 线程同时调用同一个控件属性出问题了. 在我自己窗体中增加一个定时器是没有这个问题的. C# 对对象嵌套和同步的控制还是比较好的
不过,这些经验记得不能带到 C# 以外的编程上去 我对上位机编程属于初级阶段, 只用过 vb.
所以现在问题都是比较初级阶段的 ^_^
页:
[1]