.NET4.5 Console.ReadKey()在多线程下的BUG_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .NET4.5 Console.ReadKey()在多线程下的BUG

.NET4.5 Console.ReadKey()在多线程下的BUG

 2013/8/22 12:59:58  阮萤  博客园  我要评论(0)
  • 摘要:.NET4.5在多线程的控制台里,Console.ReadKey()可能会造成线程死锁。看代码:staticvoidMain(string[]args){System.Timers.Timertimer=newSystem.Timers.Timer(1000);timer.Elapsed+=timer_Elapsed;timer.Enabled=true;Console.ReadKey();//使用Console.ReadLine();工作正常}staticvoidtimer_Elapsed
  • 标签:.net KEY 多线程 net 线程

.NET 4.5 在多线程的控制台里,Console.ReadKey()可能会造成线程死锁。看代码:

static void Main(string[] args)
{
     System.Timers.Timer timer = new System.Timers.Timer(1000);
     timer.Elapsed += timer_Elapsed;
     timer.Enabled = true;

     Console.ReadKey();// 使用Console.ReadLine() ;工作正常
}

static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
     Console.WriteLine("Hello World");
}

"Hello World"无法正常输出到控制台中。但使用Console.ReadLine()没有此问题。

原因:http://blogs.microsoft.co.il/blogs/dorony/archive/2012/09/12/console-readkey-net-4-5-changes-may-deadlock-your-system.aspx

补丁:http://support.microsoft.com/kb/2805221/en-us

发表评论
用户名: 匿名