2012-06-12 6 views
0

У меня есть метод UploadReportNotifier(), который подписан на событие, которое поднимается после того, как я закончил загрузку данных в базу данных. В UploadReportNotifier() я хочу сбросить некоторые значения в моем графическом интерфейсе, то есть в progressbars и т. Д., Но я хочу, чтобы между этим выполнялась временная задержка.Создание потока внутри задачи

Возможно ли создать поток внутри UploadReportNotifier() и вызвать thread.Sleep или более подходящий класс timer()?

Благодарим за помощь.

ответ

1

Я вижу, что вы нашли свое решение. Я просто хочу упомянуть, что в этой ситуации вы всегда должны выбирать таймеры за Thread + Sleep, которые imo - всего лишь уродливый взлом, которого следует всегда избегать.

Таймеры велики, потому что они также способны выполнять свой код в потоке графического интерфейса, поэтому вам не нужно использовать Invoke или BeginInvoke. Например, System.Windows.Forms.Timer для WinForms или System.Windows.Threading.DispatcherTimer для WPF.

+0

Я думал, что у меня было, но так, как его выложил, он не работает, поэтому я ошибся. –

+0

Похоже, и вы, и Ken2K предлагают таймеры, поэтому я поеду с этим вариантом. Спасибо за вашу помощь. –

2

Если ваша цель - подождать несколько минут после выполнения UploadReportNotifier перед обновлением всех ваших элементов управления графическим интерфейсом, тогда таймер будет хорошим решением IMO.

В вашем методе UploadReportNotifier вы можете создать и запустить таймер, чтобы ваш код «обновить мой графический интерфейс» будет выполнен через несколько секунд. Не забывайте останавливать/удалять свой таймер после обновления графического интерфейса пользователя, так как вы, вероятно, не хотите, чтобы он выполнялся несколько раз.

Вы можете использовать класс таймера System.Windows.Forms.Timer (как вы знаете, имеется несколько классов таймера). Этот не самый точный, но он выполняет код в потоке пользовательского интерфейса, поэтому при изменении пользовательского интерфейса вы не будете иметь дело с исключениями перекрестных потоков.

+0

Большое спасибо, Кен, очень ценим! –

Смежные вопросы