Вызов делегата (метод) - PullRequest
0 голосов
/ 11 ноября 2011

Я получил некоторый код, который использует делегат для передачи процента операции. Но метод делегата запускается в том же потоке, что и операция, которая работает в фоновом режиме. Поэтому обновление индикатора выполнения в методе делегата невозможно без вызова.

Должен ли я просто вызывать в методе делегата или есть лучший способ? Я не совсем понял пример, который есть на msdn (он был и на vb.net, что усложнило его: /).

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

Вы можете добавить что-нибудь по линии ниже к форме, содержащей индикатор выполнения. Это проверит, требуется ли вызов.

public void SetProgressValue(int value)
{
    if (this.ProgressBar.InvokeRequired)
    {
       this.BeginInvoke(new Action<int>(SetProgressValue), value);
       return;
    }
    this.ProgressBar.Value= value;
}
0 голосов
/ 11 ноября 2011

Dispatcher.BeginInvoke ((Action) () => YourDelegate ());

...