Таймеры внутри дочерней формы

#c# #winforms #timer

#c# #winforms #таймер

Вопрос:

Если у меня есть форма, у которой есть таймер для проверки наличия некоторых элементов в кнопке панели инструментов, и теперь я использую эту форму как дочернюю форму в другом приложении, таймер все еще работает? любая возможная проблема с потоками, которая может привести к прекращению ее работы? Причина, по которой я спрашиваю, заключается в том, что у меня есть такой сценарий, и панели инструментов не обновляются, если я открываю это приложение в другом приложении, хотел посмотреть, возникает ли проблема отсюда, и какие-либо возможные исправления?

Ответ №1:

Система.Windows.Формы.Таймер вызовет событие Tick в том же потоке, в котором он был создан, поэтому, если родительское приложение каким-либо образом блокирует свой основной поток, код в событии Tick не будет запущен до тех пор, пока поток не очистится, это может быть причиной проблемы, которую вы видите, однако остальная часть пользовательского интерфейса также не должна отвечать на запросы в этом сценарии. Система.Таймеры.Таймер вызовет событие Tick в отдельном потоке, однако это будет бесполезно, если ваш поток пользовательского интерфейса в любом случае заблокирован, поскольку это помешало бы вам обновить панель инструментов, даже если выполняется код.