永发信息网

C# Timer lock 多线程 的几点疑问。

答案:2  悬赏:60  手机版
解决时间 2021-01-26 07:16
C# 中有三个Timer类,System.Windows.Forms.Timer,System.Threading.Timer,System.Timers.Timer。

1、只有后两个才算多线程,Forms.Timer是在主线程中执行,其运行时,暂停(中断)了主线程的其它部分,不算多线程。

2、lock 用于锁定一段程序,该程序在执行时,不会被其它线程(包括后两者Timer)中断。
问题:
1、上述描述是否正确?
2、既然 Forms.Timer不算多线程,如果窗体主线程中有一段代码被 lock ,那么 Forms.Timer会将其中断吗?还是等待这段代码执行完才执行其响应函数。
3、网上说 lock 一般与 static object 一起使用,为什么要 static 的 object,静态的有什么好处,不是静态的有什么影响?
4、跨线程调用窗体中的控件会出现线程安全问题,但我发现,跨线程设置状态栏上的 label的文本属性是没有问题的,是 label的特殊,还是状态栏的特殊,还是怎么回事?
最佳答案
您好..关于您的问题.
  1>
  第一个关于Forms.timer的描述正确
  System.Windows.Forms.Timer是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler。在这种Timer的EventHandler中可 以直接获取和修改UI元素而不会出现问题--因为这种Timer实际上就是在UI线程自身上进行调用的。也正是因为这个原因,导致了在Timer的 EventHandler里面进行长时间的阻塞调用,将会阻塞界面响应的后果。
  第二个关于Lock
  如果另外的线程并未使用到LOCK的对象.则双方之间没有任何阻塞,中段,等待的关系
  2>Lock锁其实指的是以某一个变量为准.
  如果你的另外一个线程,使用到了LOCK的对象,那么他会在LOCK代码段内的代码执行完毕后执行.
  例如:
  Lock(A)
  {
  //.....耗时10分钟的操作
  }
  线程B
  XXXX
  X
  XXXX
  A=C
  XXXXX
  如果执行到了A=C
  那么下方的代码将不会被执行.当前的运行逻辑等待到了A=C这句话上.
  等待LOCK的10分钟操作完毕后.继续执行
  所以.如果窗体主线程中有一段代码被 lock ,那么 Forms.Timer会将其中断吗?还是等待这段代码执行完才执行其响应函数。

  取决于你锁定了什么
  例如你LOCK(THIS)
  因为this在winform中指当前窗体,所以你就锁定了所有的THIS内的变量,控件.集体等待.也就是.LOCK会锁定对应变量/对象的继承关系
  3>静态的有什么好处,不是静态的有什么影响?

  请看第二问的答案.如果你看明白后你就会明白.
  如果你LOCK的始终是一个new出来的对象.那么大家其实就等于没有锁.
  因为我并没有使用你的对象.所以我不阻塞
  4>跨线程调用窗体中的控件会出现线程安全问题,但我发现,跨线程设置状态栏上的 label的文本属性是没有问题的,是 label的特殊,还是状态栏的特殊,还是怎么回事?

  状态栏的UI线程其实是他的父线程所属的.
  当你要看某个控件是否符合线程 安全的情况.查阅对应对象是否存在INVOKE即可.
  其实您的第4个问题我暂时并不敢给您肯定的回答.您的赋值代码我并不清楚.

  按照理论来说.他并不特殊.虽然他没有对应invoke.
  您用的是STATEXXXXX.LABEL控件吧.
  如果还有其他问题.您可以继续追问.

  望采纳.
  Ths.
  Ben.Lampson
全部回答
1. 大部分算是对了的,但是你似乎没明确lock的目的。 2. timer与lock似乎没什么关系 3. 因为lock就像钥匙,需要大家都可以访问、且唯一的属性 4. 你如何确定label属性没问题,恰恰相反,我可以给你写出有问题的程序。你可以定义个全局整数cnt,初始为0,开启n个线程,同时对label执行获取和设置Text属性的操作,设置前加个判断,假如其Text不为X,则赋为X,并让cnt++。最后理论上cnt只可能为1,但实际上可能不止。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
力源通讯地址在什么地方,想过去办事
从德州汽车站到火车站怎么走???
成语石火风灯的意思是什么啊?有知道释义的请
东经120北纬44左右河流
家中的土炕可以睡吧拆吗?
好又多购物中心(南通通州市)地址在什么地方,
怎样把爱奇艺里下载好的视频放到百度云哪里去
不能下载因为你设置了在2G/3G网络下不允许下
开收购发票没有税率授权是怎么回事
宇峰通讯(西华店)地址在哪,我要去那里办事
发联购物广场(南通通州市)地址有知道的么?有
()是已上市的股票或债券在场外交易的市场。A.
单选题下列有关仪器的使用,能实现的是A.用托
(2008年海南卷)甲、乙、丙三组小鼠不同的免疫
成语三翻四覆的意思是什么啊?有知道释义的请
推荐资讯
祖安娜专业美容中心地址好找么,我有些事要过
load data could not be cleaned up
江苏江安集团有限公司怎么样啊,工资待遇这块
成语同敝相济的意思是什么啊?有知道释义的请
狄仁杰查案真的这么牛吗?
波碧水专营店地址在什么地方,想过去办事
友仔记驾校(珠海金湾区)地址在什么地方,想过
20万日元等于多少人民币
下列有关细胞中新陈代谢的描述正确的是A. 酶
欣欣计划每分钟打四十八个字,她实际每分钟可
苏州安德鲁公司工资待遇怎么样
求炫舞动态头像,跟图片一样的那种,是怎么做
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?