1

Как запустить какой-то метод в другом потоке? ну например хотя бы самое элементарное. есть label.content = 0 и при нажатии на кнопку, чтоб каждую секунду значение label было +1 и чтоб программа не зависала, а это делалось в потоке... Да, возможно нубский вопрос, в инете находил подобное, но чего-то не работает.... Если можете, напишите пожалуйста пример кода....

Stack
  • 9,452
Rakzin Roman
  • 5,720
  • вам нужен не поток, а таймер, к сожалению не в курсе как дела с таймерами в WPF – Spectre Mar 19 '12 at 17:40
  • не, это я к примеру.....мне именно поток нужен, чтоб действия,котор занимают много времени выполнялись фоново.... – Rakzin Roman Mar 19 '12 at 17:46
  • Спасибо, здесь нашёл,то что искал http://andsemenoff.narod.ru/programming/wpf/BackgroundWorker_page1.html – Rakzin Roman Mar 20 '12 at 08:01

2 Answers2

3

Для этих целей обычно применяется подход, основанный на BeginInvoke.

 this.Dispatcher.BeginInvoke(new Action(() =>
 {
     // Обновите ваш UI здесь.
 });
M. Williams
  • 23,562
0

В wpf обычные потоки работают также как и во всём остальном .NET + BackgroundWorker тоже никто не отменял. Обновление визуальной части производится добавлением метода в очередь основного потока.

control.Dispatcher.BeginInvoke(new fDelegate(f), null);

... private delegate void fDelegate(); private void f(){ }

RomanChugunov
  • 2,515
  • 3
  • 25
  • 37