0
Я использую этот метод courtesy of casperOne для установки значений свойств в элементах формы, если требуется вызов.Получение значения свойства из элемента формы потокобезопасным способом
static void SynchronizedInvoke(ISynchronizeInvoke sync, Action action)
{
// If the invoke is not required, then invoke here and get out.
if (!sync.InvokeRequired)
{
// Execute action.
action();
// Get out.
return;
}
// Marshal to the required thread.
sync.Invoke(action, new object[] { });
}
Это работает:
// Set a label's text
SynchronizedInvoke(lblCurrCalStatus,() => lblCurrCalStatus.Text = "Downloading...");
По понятным причинам, это не будет работать:
// Retrieve a label's text
string calStatus = SynchronizedInvoke(lblCurrCalStatus,() => lblCurrCalStatus.Text);
Есть ли функция, подобная SynchronizedInvoke
, которая может возвращать значение свойства? Для этого потребуется универсальный тип возврата и бросание так:
// Retrieve a label's text
string calStatus = (string)SynchronizedInvokeReturn(lblCurrCalStatus,() => lblCurrCalStatus.Text);
Спасибо, что работает! – Pieter