继续从调度foreach循环

问题描述 投票:1回答:1

我有一个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);

但继续不可用我怎样才能做到这一点?

c# wpf loops foreach dispatcher
1个回答
1
投票

正如我在评论中提及,你的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);
© www.soinside.com 2019 - 2024. All rights reserved.