Debug.WriteLine不适用于不同的线程

时间:2013-12-15 19:44:47

标签: c# multithreading

var timer = new Timer
{
    Enabled = true, 
    Interval = 500
};
Debug.WriteLine("new timer created");
timer.Elapsed += (s, e) =>
{
    Debug.WriteLine("hello from timer");
    // this doesn't get shown
    // in the output window
}

我需要做些什么才能在上面的输出窗口中看到我的上一个Debug.WriteLine()

1 个答案:

答案 0 :(得分:1)

您实际上没有使用单独的线程,System.Timers计时器在UI消息泵上运行(如果可用)。如果您已阻止UI线程,则计时器将永远不会运行。

检查UI线程是否未被阻止,use System.Threading.Timer that does not use the UI thread或将SynchronizingObject设置为null,以便它将使用线程池线程而不是UI线程。

编辑:或者像Hans said in his comment一样,你在控制台中运行,Main()在计时器有机会开始之前退出。