Je suis en cours d'exécution dans un modèle commun dans le code que j'écris, où je dois attendre que tous les threads dans un groupe au complet, avec un délai d'attente. Le délai d'attente est censé être le temps nécessaire pour que tous les threads, donc tout simplement de faire thread.Join(timeout) pour chaque thread ne fonctionne pas, puisque le possible, le délai est de puis délai d'attente * numThreads.
Maintenant je ne quelque chose comme ce qui suit:
var threadFinishEvents = new List<EventWaitHandle>();
foreach (DataObject data in dataList)
{
// Create local variables for the thread delegate
var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset);
threadFinishEvents.Add(threadFinish);
var localData = (DataObject) data.Clone();
var thread = new Thread(
delegate()
{
DoThreadStuff(localData);
threadFinish.Set();
}
);
thread.Start();
}
Mutex.WaitAll(threadFinishEvents.ToArray(), timeout);
Cependant, il semble comme il devrait être simple idiome pour ce genre de chose.