none
как относится поток обработчика события к потоку, запустившему это событие? RRS feed

  • Вопрос

  • Есть таймер, мы его запускаем, про потоки ничего не указываем. По таймеру срабатывает событие OnTimedEvent. Каким образом оно соотносится с потоком, из которого был запущен таймер, то есть выполнено timer.Start() ? Это вообще другой, совершенно новый поток, для которого нужно (при необходимости) выполнять синхронизацию доступа к объектам, с которыми работает запустивший таймер поток?

    29 декабря 2010 г. 18:03

Ответы

  • Если у таймера не задано свойство SynchronizingObject - то Elapsed (OnTimedEvent) вызывается в отдельном потоке из Thread Pool.

    Если задан SynchronizingObject, то он и отвечает за маршалинг вызова OnTimedEvent в нужный поток.

    Поток, в котором был создан или запущен таймер, никак не учитывается при вызове Elapsed.

    • Помечено в качестве ответа Qwester33 29 декабря 2010 г. 18:22
    • Снята пометка об ответе Qwester33 1 января 2011 г. 9:00
    • Предложено в качестве ответа PashaPashModerator 1 января 2011 г. 14:34
    • Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 19:10
    29 декабря 2010 г. 18:19
    Модератор