Как получить возвращаемое значение, когда BeginInvoke / Invoke вызывается в C #

У меня есть этот маленький метод, который должен быть потокобезопасным. Все работает, пока я не хочу, чтобы оно имело возвращаемое значение вместо 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;
        }

    }

Но не уверен, как получить значение, используя этот код либо;)

Ответы на вопрос(6)

Ваш ответ на вопрос