2016-08-08 5 views
4

Я попытался создать реализацию F # некоторого кода на C#, который использует Dispatcher.BeginInvoke для управления пользовательским интерфейсом из другого потока. Однако я изо всех сил пытаюсь заставить код работать.F # Winforms Dispatcher BeginInvoke Ошибка делегирования во время выполнения

Я пробовал несколько различных реализаций, но я всегда получаю «Дополнительная информация: Неверное определение для исполняемого метода делегированного исполнения». исключение при вызове функции ToggleVisibility.

Любой вход будет очень благодарен. Вот код: -

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())) 

ответ

3

Решено! Как расстраивает потратили так много времени, пытаясь различные методы, когда все, что я должен был сделать удалить две круглые скобки, превращая

type ToggleVisibiltyDelegate() = delegate of unit -> unit 

в

type ToggleVisibiltyDelegate = delegate of unit -> unit