我有一個WPF應用程序,我必須做一個長時間運行的任務(基本上從網絡讀取)。只是給你一個快照我做的按鈕下面的事情請單擊使用任務的異步操作,但用戶界面仍然沒有反應
Dim t As Task(Of String) = Task.Factory.StartNew(Of String)(Function()
'Thread.sleep is simulating long running task that will make UI unresponsive
Thread.Sleep(10000)
Return "Hello world from async task"
End Function)
TextBlock1.Text = t.Result
我不能使用基於事件的異步方法,因爲閱讀API中,我在我的計劃是指一個DLL確實存在,包含一個函數Public function ReadFromNetwork() as String
。此API正在對網絡進行異步調用以讀取長字符串並返回UI。所以,總之我在做TextBlock1.Text = ExternalDll.ReadFromNetwork()
。
但問題是,即使我使用任務異步,UI仍然沒有響應。
你能檢查我是否在代碼中丟失了某些東西。
任何幫助/建議將不勝感激 Thanx提前
是的,我知道...... .net 4.5帶來異步並等待關鍵字語言。但我的應用程序固有地被預Windows 8操作系統使用。 – Uday0119
@ Uday0119:.NET 4.5並不侷限於Windows 8. –
現在我得到一個異常,因爲「調用線程無法訪問此對象,因爲另一個線程擁有它。」從ContinueWith方法訪問TextBlock方法 – Uday0119