Возможно ли повторное выполнение события Windows и события таймера Windows?

#windows #timer #apc #reentrancy

#Windows #таймер #apc #повторный вход

Вопрос:

У меня есть метод «Update», который выполняется в обработчике событий (нажатие кнопки) и в обратном вызове таймера Windows forms. Возможно ли одновременное выполнение двух «Обновлений» (повторный ввод)? То есть, пока выполняется обратный вызов таймера (вызывающий метод обновления), пользователь нажимает кнопку, и обработчик щелчка выполняет обновление.

Или, это тот случай, когда два метода обновления полностью сериализованы, поскольку оба выполняются в потоке пользовательского интерфейса.

Или, это тот случай, когда Update может перевести поток в какое-то «Ожидаемое с предупреждением ожидание» (я не очень разбираюсь в этом), и обработчик щелчков может выполнить as APC?

Как видите, я в этом совершенно запутался…

Любые пояснения будут высоко оценены!

Ответ №1:

Это зависит от типа используемого таймера: тот, который выполняется в главном потоке пользовательского интерфейса (System.Windows.Формы.Таймер — повторный вход невозможен) или один, выполняемый в его собственном потоке (System.Потоковая передача.Таймер — повторный вход возможен).