Используя C # 2.0 и делегат MethodInvoker, у меня есть приложение с графическим интерфейсом, получающее событие из потока графического интерфейса или из рабочего потока.
Я использую следующий шаблон для обработки события в форме:
private void SomeEventHandler(object sender, EventArgs e)
{
MethodInvoker method = delegate
{
uiSomeTextBox.Text = "some text";
};
if (InvokeRequired)
BeginInvoke(method);
else
method.Invoke();
}
Используя этот шаблон, я не дублирую реальный код пользовательского интерфейса, но я не уверен, хорош ли этот метод.
В частности, линия
method.Invoke()
использует ли он другой поток для вызова или это несколько переводит в прямой вызов метода в потоке GUI?