実行に数秒かかるリソースを大量に消費するメソッドがあります。そのため、タスクの実行中に待機アイコンを表示するように、タスク内で呼び出すことにしました。
私がやったことはimgLoading.Visibility = Visibility.Visible
、タスクを作成する前、そしてタスクを作成する前と呼ばれています。タスクが完了したら、を呼び出しますimgLoading.Visibility = Visibility.Collapsed;
。
何らかの理由で、画像が折りたたまれることはなく、無期限に表示されたままになります。これは非常に奇妙な問題であり、非常に簡単に再現できます。これは私が持っているすべてのコードであり、私が間違ったことを本当に見ることができません:
imgLoading.Visibility = Visibility.Visible;
var validityTask = Task.Factory.StartNew(() => ExpensiveMethod(param1,param2));
validityTask.ContinueWith((previousTask) =>
{
bool isvalid = validityTask.Result;
if (isvalid)
{
//Do something to UI
}
else
{
//DO something to UI
}
imgLoading.Visibility = Visibility.Collapsed;
}, TaskScheduler.FromCurrentSynchronizationContext());
コードが示すようにimgLoading
、タスクの実行中に画像を表示し、タスクの完了時にアイコンを非表示にしようとしています。この現在のコードでは、タスクが完了した後もアイコンは表示されたままになります。
私は何が間違っているのですか?