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