我有一个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