UIが応答し、進行状況バーが表示されるように、別のスレッドでforループを実行しようとしています。
問題は、それを行う方法がわからないことです:)。このコードでは、プロセスは別のスレッドで開始されますが、コードの次の部分は同時に実行されます。messageBoxが表示され、結果が返されることはありません(たとえば、リストボックスで選択されたインデックスプロパティが設定されることはありません)。
「taskEx.delay()」を使用しても動作しません。
TaskEx.Run(() =>
{
for (int i = 0; i < sResults.Count(); i++)
{
if (sResults.ElementAt(i).DisplayIndexForSearchListBox.Trim().Contains(ayaStr))
{
lstGoto.SelectedIndex = i;
lstGoto_SelectionChanged(lstReadingSearchResults, null);
IsIndexMatched = true;
break;
}
}
});
//TaskEx.delay(1000);
if (IsIndexMatched == true)
stkPanelGoto.Visibility = Visibility.Collapsed;
else //the index didn't match
{
MessagePrompt.ShowMessage("The test'" + ayaStr + "' does not exist.", "Warning!");
}
「for」または「foreach」ループでマルチスレッドを使用する方法を教えてください。