Invocation parallèle de filetage, action

Mon code comme ci-dessous

public void DownloadConcurrent(Action Methord) { Action[] methordList = new Action[Concurent_Downloads]; for (int i = 0; i < Concurent_Downloads; i++) { methordList[i] = Methord; } Parallel.Invoke(methordList); } 

Parallel.Invoke donne une erreur:

 "cannot convert from 'System.Action[]' to 'System.Action[]'" 

La méthode qu’elle appelle est

 public void DownloadLinks(ssortingng Term) { } 

cochez Parallel.ForEach comme ci-dessous

  static void Main(ssortingng[] args) { List p = new List() { "Test", "Test2", "Test3"}; Parallel.ForEach(p, Test); } public static void Test(ssortingng test) { Debug.WriteLine(test); } 

Cela devrait faire l’affaire pour vous

HTH Dominik

Dans votre cas, c’est plus facile si vous utilisez

Parallel.ForEach

sur votre liste de chaînes au lieu d’utiliser

Parallel.Invoke

avec paramètre supplémentaire. Faites-moi savoir si vous voulez vous en tenir à Parallel.Invoke.

Parallel.Invoke accepte Action tableau Action pendant que votre code lui transmet un tableau Action . Ce que vous pouvez faire, c’est:

 public void DownloadConcurrent(Action Methord) { Action[] methordList = new Action[Concurent_Downloads]; var r = methordList.Select(a => (Action)(() => a("some_str"))).ToArray(); Parallel.Invoke(r); } 

Vous devez remplacer some_str par la valeur appropriée pour chaque action