управление таймером в Windows-приложении в .net? - PullRequest
1 голос
/ 16 сентября 2011

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

Пожалуйста, у кого-нибудь есть идеи или какой-то фрагмент кода.Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 16 сентября 2011

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

РЕДАКТИРОВАТЬ: По предложению Кена, добавив некоторые детали.

Вот ссылка на описание потоков в приложениях WinForms.

http://www.yoda.arachsys.com/csharp/threads/winforms.shtml

Вы можете оставить свой таймер на месте, но вам нужно создать поток, чтобы выполнить работу, которую сейчас выполняет таймер.Могут возникнуть проблемы с использованием данных из этого потока в вашем пользовательском интерфейсе.Если это так, вам нужно изучить BeginInvoke и InvokeRequired или сохранить результаты задачи в переменной-члене (для этого может потребоваться ключевое слово lock).Надеюсь, это поможет.

...