我有一个 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()
。
但问题是即使我使用任务异步,用户界面仍然没有响应。
您能否检测一下我是否在代码中遗漏了某些内容。
任何帮助/建议将不胜感激 Thanx 提前