Frage

Ich mag den Griff meiner Form aus einer anderen Klasse erhalten (wahrscheinlich Thread). Ich will es die Art und Weise tun, ich rufe Sie

    public int GetHandle
    {
        get
        {
            if (this.InvokeRequired)
            {
                this.Invoke((MethodInvoker)delegate
                {
                    return this.Handle.ToInt32();
                });
            }
        }
    }

Ich erhalte eine Fehlermeldung „Da‚System.Windows.Forms.MethodInvoker‘void zurückgibt, ein Schlüsselwort return nicht durch ein Objekt Ausdruck befolgt werden müssen“

Wenn ich nicht die invoke verwenden, erhalte ich eine Ausnahme, dass ich nicht die Methode aus dem aktuellen Thread aufgerufen wird.

War es hilfreich?

Lösung

Sie können jeden Delegierten aufrufen, nicht nur MethodInvoker. Versuchen Sie folgendes:

public int GetHandle
    {
        get
        {
            if (this.InvokeRequired)
            {
                return (int)this.Invoke((GetHandleDelegate)delegate
                {
                    return this.Handle.ToInt32();
                });
            }
            return this.Handle.ToInt32();
        }
    }
private delegate int GetHandleDelegate();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top