F# Asynchronous Programming Sample

  • 741
  • 0

F# Asynchronous Programming Sample

C# 5.0 提供了 Async 關鍵字,用來做非同步的功能。當然在 F# 也會有同樣的功能,而且個人認為寫法比 C# 稍微簡潔一些。

下列 F# 程式碼,宣告了一個 async 區塊,之後再呼叫 Async 類別的 StartAsTask 方法。



type AsyncTestClass1() = 

    member this.AsyncTest() =
        let method1 = 
            async {
                do! Async.Sleep(3000)
                return "Test Value"
                }
        //method1 |> Async.StartAsTask
        Async.StartAsTask method1

這樣的寫法,程式碼不但精簡,而且也容易理解。

 

接下來的程式碼是用 C# 的 WinForm 專案來做示範,使用上並沒有不同。


        {
            string strResult = string.Empty;
            this.label1.Text = "waiting....";
            AsyncTestClass1 c = new AsyncTestClass1();
            strResult = await c.AsyncTest();
            this.label1.Text = strResult;
        }