我有一个foreach循环,我已经用它里面的调度员和我在它里面的另一个的foreach。我要继续检查结果后,第一次的foreach。
bool isNude = false;
var SearchTask = Task.Run(async () =>
{
foreach (var file in await GetFileListAsync(GlobalData.Config.DataPath))
{
isNude = false;
if (!ct.IsCancellationRequested)
{
await Dispatcher.InvokeAsync(() =>
{
if (ButtonNude.IsChecked == true)
{
foreach (var itemx in nudeData)
{
if (itemx.Equals(Path.GetFileNameWithoutExtension(file.FullName)))
{
isNude = true;
break;
}
}
}
if (isNude)
continue;
}, DispatcherPriority.Background);
}
}
}, ct);
但继续不可用我怎样才能做到这一点?
正如我在评论中提及,你的Dispatcher.InvokeAsync
拉姆达不知道它被称为一个循环中,所以为此没有可用continue
。您需要使用return
退出已久的任务,让你的代码可以在等待任务之后继续。
bool isNude = false;
var SearchTask = Task.Run(async () =>
{
foreach (var file in await GetFileListAsync(GlobalData.Config.DataPath))
{
isNude = false;
if (!ct.IsCancellationRequested)
{
await Dispatcher.InvokeAsync(() =>
{
if (ButtonNude.IsChecked == true)
{
foreach (var itemx in nudeData)
{
if (itemx.Equals(Path.GetFileNameWithoutExtension(file.FullName)))
{
isNude = true;
break;
}
}
}
if (isNude)
return; // continue -> return
// other code
}, DispatcherPriority.Background);
// <--- code continues here after return
}
}
}, ct);