長時間実行するタスク(基本的にはネットワークからの読み取り)を実行する必要がある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