De la tâche.Usine.StartNew(someMethod(withParam)).continueWith(sameMethod(differentParam)).Wait()
Quelle est la bonne syntaxe pour paralléliser le code suivant?
static void Main(string[] args)
{
Task.Factory.StartNew(
() =>
doOne(SelectedTask.option1)
.ContinueWith(
task =>
doOne(SelectedTask.option1)).Wait()
);
}
Même méthode avec enum
"selectedTask" pour déterminer le code à exécuter :
static enum SelectedTask
{
option1,
option2
}
static void doOne(SelectedTask Lunch)
{
switch (lunch)
{
case SelectedTask.option1:
Console.WriteLine("option1");
break;
case SelectedTask.option2:
Console.WriteLine("option2");
break;
default:
break;
}
}
Vous devez vous connecter pour publier un commentaire.
Voulez-vous votre
doOne
appels à se produire en même temps? Ensuite, vous pouvez commencer directement à partir de la tâche de l'usine:Voulez-vous votre
doOne
appels à se produire de façon séquentielle? Ensuite, vous pouvez la chaîne d'eux à l'aide deContinueWith
:Le code dans le titre de votre post (avec quelques corrections) est essentiellement d'effectuer exactement la même fonction que mon séquentielle des tâches de la chaîne ci-dessus:
Réponse à votre question ci-dessous.
Si je comprends bien, vous voulez être en mesure d'exécuter une tâche pour une liste de variables de
SelectedTasks
en parallèle:RunAllSelectedTaskOptions
à accepter et à exécuter une liste deSelectedTasks
:Un autre mode de mise en œuvre de
RunAllSelectedTaskOptions
serait d'utiliserParallel.ForEach
, qui vont s'exécuter en parallèle et bloquer jusqu'à ce que le plus lent/dernière itération est terminée:doOne()
, seulement...pas par l'exécution en parallèle mais dans Une Élégante Ligne de Code, une dernière Question si je peux demander, la seule option pour exécuter des tâches en parallèle serait le premier exemple? qui déclare chaque tâche séparée, déclaration, puis effectuerTask.WaitAll()
À tous, connaissez-vous un moyen élégant pour prendre une classe qui va avoir de 5 à 10 méthodes comme (variante 1,2 3 4...) et d'exécuter le tas, l'avenir est d'avoir au moins 10 d'entre eux (n'a pas d'importance sera dans une classe ou pas (peut-être si nous choisissons) pourrait-il être fait?Je suppose que vous parlez de la parallélisation les deux
doOne
appels?Si oui, alors vous devez faire quelque chose comme ceci:
*Le code ci-dessus est assez précise, mais la syntaxe n'a pas été validé.
Task.Factory
est limitée à vide(pas de paramètres) des méthodes , et à l'aide d'une Liste<tâches> va se comporter de la même manière queTask.Factory.StartNew()
, seulement differece est avec le code dans votre réponse, il vous permet de passer des paramètres à la méthode ?