RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
.NET游魂现象是什么

这篇文章主要讲解了“.NET游魂现象是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NET游魂现象是什么”吧!

创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、网站设计制作、成都网站建设、网站优化、软件开发、网站改版等服务,在成都10余年的网站建设设计经验,为成都千余家中小型企业策划设计了网站。

万事里总会有个一,普遍规律下总有那么一些例外的东西,比如说timer,比如说.NET游魂现象,其作用域就不会因函数的结束而结束。考察以下.NET游魂现象处理函数,

private void button1_Click(object sender, EventArgs e)  {      System.Timers.Timer t = new System.Timers.Timer();      t.Interval = 1000 * 2;      t.Elapsed += delegate      {          MessageBox.Show(System.DateTime.Now.ToString());      };      t.Start();  }

按完button1按钮后,timer持续运行,每隔约2秒就会弹出一个msgbox显示当前时间,当然,因为我们已经失去了t这个变量,表面上也就无法终止这个timer了(也许有办法终止吧)。对于这种现象,我推测是两种原因造成的。一,timer是对windows内核对象的包装,上面这段托管代码的底层调用了来自windows的一些内核对象,在超离作用域的时候,没有对内核对象进行相应的处理,当然这只是推测,我现在没有精力去证实。其二:使用了多线程技术,考察以下代码,

System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(delegate() {  for (int i = 0; i < 6; i++)   {  System.Threading.Thread.Sleep(3000);  MessageBox.Show("I'm in thread");                  }                     }));  t.Start();  MessageBox.Show("end of click");

以上两段代码,现象是类似的,为将其称之为.NET游魂现象——看上变量已经死了,实际上依然存在,原理尚有待研究。

感谢各位的阅读,以上就是“.NET游魂现象是什么”的内容了,经过本文的学习后,相信大家对.NET游魂现象是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站标题:.NET游魂现象是什么
网页路径:http://lswzjz.com/article/gcgjce.html