MethodInvoker vs Control.Invoke - PullRequest
       0

MethodInvoker vs Control.Invoke

2 голосов
/ 25 июля 2011

Я делаю простые обновления GUI по таймеру.Какой метод лучше использовать, если я обновляю один элемент управления?MethodInvoker, например:

this.Invoke((MethodInvoker)delegate
{
  systemMode.Text = systemMode.ToString();
});

или создайте вызов элемента управления следующим образом:

public void UpdateSystemMode()
{
    if (systemMode.InvokeRequired)
    {
         UpdateSystemMode.Invoke(new
             UpdateSystemModeDelegate(UpdateSystemMode));
    }
    else
    {
        systemMode.UpdateSystemMode();
    }  
}

Очевидно, что метод вызова метода имеет меньше кода, но какой из них лучше всего использовать?*

1 Ответ

2 голосов
/ 25 июля 2011

UpdateSystemMode.Invoke(new UpdateSystemModeDelegate(UpdateSystemMode));

и

this.Invoke((MethodInvoker)delegate
{
  systemMode.Text = systemMode.ToString();
});

абсолютно такие же, как и

this.Invoke((Action)(()=> systemMode.Text = systemMode.ToString()));

правильный путь:

public void UpdateSystemMode()
{
    if (this.InvokeRequired)
         this.BeginInvoke((Action)UpdateSystemMode);
    else
        systemMode.UpdateSystemMode(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...