Обновление пользовательского интерфейса Threading (не требуется вызывать вопрос) - PullRequest
1 голос
/ 24 января 2010

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

Примечания: Каждый запрос на сокет поступает в отдельном потоке.

Ответы [ 2 ]

1 голос
/ 24 января 2010

Вы можете обновить пользовательский интерфейс в System.Timers.Timer (установите свойство таймера SynchronizingObject для вашей формы) с интервалом в три секунды и сбрасывать его всякий раз, когда вы получаете запрос.

РЕДАКТИРОВАТЬ : Если подумать, вам следует использовать System.Threading.Timer, который менее удобен, чем Timers.Timer, но более легок и абсолютно безопасен для потоков. При обратном вызове вам нужно будет позвонить form.BeginInvoke, чтобы переключиться на поток пользовательского интерфейса.

Каждый раз, когда вы получаете запрос, вы запускаете timer.Change(3000, -1).

0 голосов
/ 24 января 2010

Используйте System.Timers.Timer. Каждый раз, когда приходит запрос, вы сбрасываете таймер на 3 секунды. Когда таймер отключается, обновите интерфейс. Таймер должен быть доступен каждому потоку, поэтому вам нужно защитить его мьютексом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...