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