当前位置: 首页 > news >正文

专业商城网站制作做网站你给推广

专业商城网站制作,做网站你给推广,做兼职的网站 知乎,网站后台路径业务场景如下#xff1a;WPF应用程序后台有个定时任务在接收PLC硬件数据(该线程接收完数据之后, 会重新启动一个新线程继续接收.....)#xff0c;当应用程序关闭时, 我们得确保接收PLC硬件数据的线程完成之后,再关闭应用程序#xff0c;否则会造成数据丢失。上面的业务场景是…业务场景如下WPF应用程序后台有个定时任务在接收PLC硬件数据(该线程接收完数据之后, 会重新启动一个新线程继续接收.....)当应用程序关闭时, 我们得确保接收PLC硬件数据的线程完成之后,再关闭应用程序否则会造成数据丢失。上面的业务场景是前一段时间一个朋友向我请教WPF的问题项目中有一个ManualResetEventSlim类 不知道这个类是干什么的。由于本人从事WPF的工作将近10年在项目中用到过不少与线程相关联的类所以在这做个简单介绍做过C/S架构的朋友对多线程接触会更多那么线程与线程之间是如果通信呢就是通过ManualResetEventSlim类来完成其实这个类和ManualResetEvent功能上是一样。ManualResetEventSlim 更轻量级一些。我们解释一下这个类具体用法:static void MRES_SetWaitReset() {System.Threading.ManualResetEventSlim mres1 new System.Threading.ManualResetEventSlim(false); // initialize as unsignaledSystem.Threading.ManualResetEventSlim mres2 new System.Threading.ManualResetEventSlim(false); // initialize as unsignaledSystem.Threading.ManualResetEventSlim mres3 new System.Threading.ManualResetEventSlim(true); // initialize as signaled// Start an asynchronous Task that manipulates mres3 and mres2var observer Task.Factory.StartNew(() {mres1.Wait();Console.WriteLine(observer sees signaled mres1!);Console.WriteLine(observer resetting mres3...);mres3.Reset(); // should switch to unsignaledConsole.WriteLine(observer signalling mres2);mres2.Set();});Console.WriteLine(main thread: mres3.IsSet {0} (should be true), mres3.IsSet);Console.WriteLine(main thread signalling mres1);mres1.Set(); // This will kick off the observer Taskmres2.Wait(); // This wont return until observer Task has finished resetting mres3Console.WriteLine(main thread sees signaled mres2!);Console.WriteLine(main thread: mres3.IsSet {0} (should be false), mres3.IsSet);// Its good form to Dispose() a ManualResetEventSlim when youre done with itobserver.Wait(); // make sure that this has fully completedmres1.Dispose();mres2.Dispose();mres3.Dispose(); }当前方法有两个线程:主线程和oberver子线程。应用程序运行时这两个线程同时执行oberver子线程调用mres1.Wait()所以使oberver子线程处于等待。主线程继续运行当调用mres1.Set()主线程会给oberver子线程发个信号主线程对oberver子线程说okoberver子线程你可以继续运行了这时oberver线程mres1.Wait()收到该信号后不再等待继续执行下面代码。主线程执行到 mres2.Wait();方法时这时主线程会挂起处于等待状态,这时oberver子线程继续执行,当oberver子线程运行到mres2.Set(); oberver子线程会给主线程发送一个信号oberver子线程会对主线程说:OK主线程可以运行了于是mres2.Wait()不再等待会继续运行. OK, 这就是这个方法的大体执行流程.总结ManualResetEventSlim类Wait()方法内部检测到IsSet属性的值如果为false线程会挂起。如果为IsSet为ture线程不会挂起会继续执行。Reset()会将IsSet设置成false。Set() 会将这IsSet设置成true。 备注Wait()内部通过轮训来判断这个值.来决定时候处于等待状态。
http://wiki.neutronadmin.com/news/194655/

相关文章:

  • 公司建设网站费用吗新手 网站建设 书籍
  • 百度站长平台诊断苏州网站设计服务
  • php 手机网站cmsdw网站开发环境搭建
  • 湛洪波.jsp网站开发详解建设工程 法律 网站
  • 网站商城开发装修网站怎么做的
  • 企业网站设计步骤iis 网站显示建设中
  • 设计相关的网站网站的排版问题
  • 网站建设公司需要哪些网站创作
  • 电影网站怎么做优化如何做拦截网站
  • 聊城做网站找谁国外网站平台
  • 带做网站价位建设网站上申请劳务资质
  • 做钓鱼网站软件两个wordpress共享账户
  • 网站服务器和空间谁会制作网站
  • 广告设计制作公司网站o2o营销模式
  • 手机营销网站制作phpstudy
  • 海东商城网站建设自己做门户网站
  • myeclipse做网站更改名字最近国际新闻
  • 自己做的网站怎么发布上wordpress媒体库现实不全
  • 开发区经济建设网站门户网站的发展趋势
  • 建站公司的服务器简约手机网站源码
  • 虎丘网站建设如何做影视网站
  • 江苏建设厅老网站婚庆公司取名大全集
  • 代做通一样的网站小型企业做网站的价格
  • 沧州建设网站的公司深圳酒店vi设计公司
  • 网站建设好评语wordpress改成ajax
  • 霸州网站优化帮别人做ppt赚钱的网站
  • flash网站建设教程视频正规软件开发培训机构
  • 模板网站搭建网站建设基本模板介绍
  • 做c语言的题目的网站百度灰色关键词排名
  • 成都建站开发关键词分析工具有哪些