У меня есть этот маленький метод, который должен быть потокобезопасным. Все работает, пока я не хочу, чтобы оно возвращало значение вместо void. Как получить возвращаемое значение при вызове BeginInvoke?
public static string readControlText(Control varControl) {
if (varControl.InvokeRequired) {
varControl.BeginInvoke(new MethodInvoker(() => readControlText(varControl)));
} else {
string varText = varControl.Text;
return varText;
}
}
Изменить: я предполагаю, что BeginInvoke не является обязательным в этом случае, поскольку мне нужно значение из графического интерфейса пользователя, прежде чем поток сможет продолжить. Поэтому использование Invoke также хорошо. Просто не знаю, как использовать его в следующем примере для возврата значения.
private delegate string ControlTextRead(Control varControl);
public static string readControlText(Control varControl) {
if (varControl.InvokeRequired) {
varControl.Invoke(new ControlTextRead(readControlText), new object[] {varControl});
} else {
string varText = varControl.Text;
return varText;
}
}
Но не уверен, как получить значение с помощью этого кода:)