J'ai récemment demandé à un développeur d'écrire une bibliothèque en utilisant les nouvelles capacités de multithreading de .NET 4.0.Est-ce que quelqu'un sait de bonnes ressources pour des modèles/tests de programmation parallèles utilisant des tâches .NET 4.0?
Il a fait du bon travail, mais je suis préoccupé par le fait que la logique Tâche est répétée dans tout le code et n'est pas bien encapsulée.
Je suis également préoccupé par le fait que cela crée un problème quand il s'agit de tester. Normalement, je teste en créant un joint dans le code en créant une interface et un objet stub/mock pour exécuter mes tests. Je suppose que c'est possible en utilisant cette façon de faire. Il semble que la logique du code de production soit très différente de la logique de test.
Est-ce que la solution est de faire des tests parallèles et de répéter simplement la logique de la tâche? Ou les gens ont-ils pensé à des modèles où une grande partie de la logique de gestion des tâches peut être encapsulée pour une duplication facile?
Merci!
Task task = Task.Factory.StartNew(() =>
{
if(cancellationToken.IsCancellationRequested)
{
throw new OperationCanceledException();
}
if (_bookHeader.EncryptionType != 0)
{
throw new MobiException("The book is encrypted");
}
ExtractText();
partReady(66.66f);
}, cancellationToken);
Task opfTask = task.ContinueWith(antecedent =>
{
if (antecedent.Status != TaskStatus.Canceled)
{
OpfDocument opf = CreateOpf();
partReady(80);
MobiDocument book = new MobiDocument()
{
Contents = _mobiHtml,
Description = opf,
Header = _bookHeader,
Sections = _sections
};
Document = book;
GC.Collect();
partReady(100);
}
});
return opfTask;
}
+1 N'essayant pas d'être un as intelligent, mais ce fil est une autre illustration du problème. Je n'ai pas downvoted l'autre poste, mais je ne l'ai pas upvoting non plus (Sérieusement, ne veux pas entrer dans des arguments ici - ont joué ce rôle et reviendront pour lire vos recommandations) –