2016-08-08 63 views
4

Ich habe versucht, eine F # -Implementierung von einigen C# -Code erstellen, die Dispatcher.BeginInvoke verwendet, um die Benutzeroberfläche von einem anderen Thread zu bearbeiten. Ich habe jedoch Schwierigkeiten, den Code zum Laufen zu bringen.F # Winforms Dispatcher BeginInvoke Delegat Problem zur Laufzeit

Ich habe ein paar verschiedene Implementierungen versucht, aber ich bekomme immer eine "Zusätzliche Informationen: Illegale Definition für Laufzeit implementiert Delegate-Methode." Ausnahme beim Aufruf der ToggleVisibility-Funktion.

Jede Eingabe wäre sehr dankbar erhalten. Hier ist der Code: -

open System 
open System.Drawing 
open System.Windows.Forms 

type ToggleVisibiltyDelegate() = delegate of unit -> unit 

type NotifyWindow() as form = 
    inherit Form() 
    let label1 = new Label() 
    do form.InitializeForm 

    member this.ToggleVisibility() = 

     if (this.Visible) then 
      this.BeginInvoke(new ToggleVisibiltyDelegate(fun() -> this.Hide())) 
     else 
      this.BeginInvoke(new ToggleVisibiltyDelegate(fun() -> this.Show())) 

Antwort

3

Gelöst! Wie frustrierend haben so viel Zeit damit, verschiedene Methoden verbracht, als alles, was ich tun musste, war zwei Klammern zu löschen, dreht

type ToggleVisibiltyDelegate() = delegate of unit -> unit 

in

type ToggleVisibiltyDelegate = delegate of unit -> unit