簡體   English   中英

Foreach等待任務完成

[英]Foreach wait for task to complete

我有這樣的說法:

        foreach (var item in listBoxFileNames.SelectedItems)
        {
            MessageBox.Show("I am not waiting");
            CancellationTokenSource tokenSourcve = new CancellationTokenSource();
            CancellationToken token = tokenSourcve.Token;

            Task task1 = new Task(() =>
                {
                    ProcessDatas(); // method
                }
                , token);

            task1.Start();
        }

我想讓foreach等待任務完成。 但它沒有等待。 它在每個messagBox之后立即向我顯示MessageBox。

是的,您正在啟動任務,然后該任務將在后台執行。 如果您希望循環完全同步地運行,則根本不調用Task中的ProcessDatas() 可以啟動它,然后等待它完成-但是尚不清楚能給您帶來什么好處。

如果要並行啟動所有任務,然后再等待它們,則可以創建List<Task> ,然后調用Task.WaitAll或僅使用Parallel.ForEach開始。

一旦完成任務,您能否使布爾變為真,然后將其余的放入if(bool)循環中?

Afaik您可以只調用Task.Wait()

嘗試使用此代碼

task1.Wait();

並閱讀此任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM