在 Windows XP 環境下使用 Microsoft.Bcl.Async

  • 979
  • 0

如果因為使用者環境關係,只能使用 .NET Framework 4 來開發,

並且想使用 async/await 時,就得額外參考 Microsoft.Bcl.Async 的 DLL,

但為了確保在 Windows XP, Windows 7, Windows 8.1 都能執行,

所以我在每個環境都執行了安裝 Microsoft.Bcl.Async 套件才有的 GetResponseAsync 擴充方法(不然目標版本必須為 .NET Framework 4.5 以上才有),

順利在 Windows 7, Windows 8.1 都能正常執行,那我猜測 Windows 10 也應該沒問題,

但往往沒這麼順利,悲劇就發生在 WIndows XP… 接下來讓我們看如何解決

如果想在 Windows XP 上執行的話,必須先確認已經安裝 KB2468871

如果在 Windows XP 沒安裝 KB2468871,

執行到有使用 async 的方法時,程式會自動關閉,而且是什麼訊息都沒有。

但事情還是沒這麼簡單,沒想到只是打開程式,按下紅色關閉按紐,就會出現

為什麼會關閉到現在還不清楚,從事件中只看到這樣的訊息

經過一番搜尋,不知道關鍵字怎麼下,找不到解答,正要放棄之時…

 

既然是在關閉的時候出錯,那我們能繞過關閉,自己手動關閉嗎?

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            Application.ExitThread();
        }

居然 Work 了! 如此一來,就能在 Windows XP 使用 async/await 開發的寫法囉~