请教一个多线程变量赋值的问题

m0_37670973 2018-08-21 04:41:33
我在主程序里面定义了三个线程,分别去不同的数据,又定义了三个变量,分别标识这三个线程执行结束。然后定义了一个timer,每100ms检查一次三个变量的值,如果全为true,证明线程的主要逻辑都执行完毕,然后启动两个线程,取一些其他的数据。并且把timer关闭,把三个变量全部设为false。
问题:timer的逻辑执行完毕后,为什么三个变量还是true。为啥没有设成false。
...全文
563 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
再重复一遍,捕获一个值(或者也包括集合)的改变事件,跟线程也直接关系。你之所以纠结线程这个看似高大上的概念,是没有把 .net 基本模式(实际上任何语言都一样,都有浅显抄袭几行代码语句和深入编程模式的区别)学到的问题。
  • 打赏
  • 举报
回复
变量存储可以实现为“属性”而赋予程序行为。而值的改变应该采用 INotifyPropertyChanged 等等一系列正规的设计模式。软件的对象之间的通讯、监听应该是规范的和高性能的,不是什么傻傻地滥用轮询方式的.................除了语言之外还要努力学点软件设计知识,免得有些刚学了点 java 的人跑到 .net 论坛来又来捣乱。
  • 打赏
  • 举报
回复
滥用线程、timer、轮询........这些都是编程大忌。你应该学习一下比较正规的设计模式和事件驱动基本设计概念。
一粒芥麦种子 2018-09-15
  • 打赏
  • 举报
回复
请采用多线程的委托事件处理。
正怒月神 2018-08-21
  • 打赏
  • 举报
回复
你把三个线程使用的各自的变量,
改成
static bool a;
static bool b;
static bool c;

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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