Как запустить какой-то метод в другом потоке?
ну например хотя бы самое элементарное. есть label.content = 0
и при нажатии на кнопку, чтоб каждую секунду значение label было +1 и чтоб программа не зависала, а это делалось в потоке...
Да, возможно нубский вопрос, в инете находил подобное, но чего-то не работает....
Если можете, напишите пожалуйста пример кода....
Asked
Active
Viewed 4,773 times
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 Answers
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