2013-12-15 4 views
3
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()?Debug.WriteLine не работает на различных потоках

+0

@ColeJohnson: No. 1) stdout - процесс глобальный. 2) Это не так. – SLaks

+0

У вас есть другие сообщения Debug.WriteLine, которые появляются в окне вывода? – Gusdor

+0

@ Гусдор Вы имеете в виду, кроме первого? – Johan

ответ

1

Вы фактически не используете отдельные потоки, таймер System.Timers работает на насосе сообщения пользовательского интерфейса, если он доступен. Если вы заблокировали поток пользовательского интерфейса, таймер никогда не запустится.

Проверьте, что либо поток UI не заблокирован, use System.Threading.Timer that does not use the UI thread или установить SynchronizingObject в null так он будет использовать Threadpool нить вместо потока пользовательского интерфейса.

EDIT: Или как Hans said in his comment, вы запускаете консоль и Main() уходит, прежде чем у таймера есть шанс выстрелить.

+0

Не это. Событие называется Elapsed, а не Tick. –

+0

@HansPassant System.Timers имеет ту же проблему. Отредактировано сообщение. –

Смежные вопросы