之前寫程序的時候在遇到一些比較花時間的操作例如HTTP請求時,總是會new一個Thread處理。對XxxxxAsync()之類的方法也沒去了解過,倒也沒遇到什麼大問題。最近因為需求要求用DevExpress寫界面,跑起來後發現比Native控件效率差好多。這才想到之前看到的“金科玉律”:不要在UI線程上執行界面無關的操作,因此集中看了下C#的異步操作,分享一下自己的比較和總結。
IDE:VS2015 Community
.NET版本:4.5
使用函數隨機休眠100到500毫秒來模擬耗時任務,並返回任務花費的時間,在UI線程上調用這個方法會造成阻塞,導致UI假死,因此需要通過異步方式執行這個任務,並在信息輸出區域顯示花費的時間。
主界面中通過各種不同按鈕測試不同類型的異步操作