簡體   English   中英

在列表中使用Parallel.ForEach和函數

[英]use Parallel.ForEach with function in list

我想用Parallel.ForEach做到這一點。 我能怎么做?

partial class Form1: Form
{
private List<my_class> lstmy_class = new List<my_class>();  

private void execute_tpl(object source, ElapsedEventArgs e)
    {
        var tokenSource = new CancellationTokenSource();
        var token = tokenSource.Token;
        var tab_task = new Task[lstmy_class.Count];
        try
            {
                for (int i = 0; i < lstmy_class.Count; i++)
                {
                   tab_task[i] = Task.Factory.StartNew(() => lstmy_class[i].Calcul(token));
                }

                Task.WaitAll(tab_task);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : "+ex.GetType());
            }
    }
}

class my_class{ 
... 
    public void Calcul(CancellationToken token)
    {
       // do work       
    }   
}

我嘗試:

Parallel.ForEach<my_class>(lstChartClass, () => Calcul(token));

但是編譯器不需要這種語法。 我找不到好的語法。

我也嘗試使用Parallel.ForEach<my_class>(lstChartClass, (i) => lstChartClass[i]Calcul()); 但沒有任何效果。

Parallel.ForEach的第二個參數是Action<TSource> ,這意味着它必須是不返回任何內容的委托,但將TSource作為參數。 因此,您的情況的語法將是

Parallel.ForEach(lstmy_class, n => n.Calcul(token));

暫無
暫無

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

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