2016-12-22 6 views
1

Ich bin erst neu in F # Programmierung und ich baue ein Projekt, das eine F # Datei enthält und während der Erstellung gibt es einen Fehler in Zeile 5 (Fortschritt):Der Typ 'bool' ist nicht kompatibel mit dem Typ 'IDisposable'


der Typ boolsche ist nicht kompatibel mit dem Typ 'IDisposable'


member private this.Main() = async{ 
     let! cont = async{ 
      try 
       let! model = async{ 
    (*Error*)  use! progress = Progress.Show(ctx, LocalDevice.instance.loading) 
        return! load() 
       } 
       return this.ShowForm(model) 
      with err -> 
       do! show_error(err) 
       return this.Main() 
     } 
     return! cont 
    } 

Weiß jemand, warum dieser Fehler kommt und was ist die Lösung?

+4

Bitte geben Sie eine [MCVE] (http://stackoverflow.com/help/mcve). Niemand ist hier bereit, Ihren gesamten Quellcode zu lesen. – HimBromBeere

+2

boolesche Variable unterstützt IDisposable nicht. Nur Objekte, die die IDisposable-Schnittstelle implementieren, können mit dem Schlüsselwort "use" verwendet werden. – Prabu

+1

Werfen Sie einen Blick auf diese Dokumentation: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/resource-management- the-use-keyword – Prabu

Antwort

2

Sie können nur use (oder use!) etwas, das IDisposable ist, was bool ist nicht (wie der Compiler Fehlerzustände). Verwenden Sie let! statt:

let! progress = Progress.Show(ctx, LocalDevice.instance.loading) 
+0

Danke, das funktioniert. –

Verwandte Themen