Je suis en train de contourner la limite de la poignée de wait64 que .Net 3.5 imposeThreadPool - WaitAll 64 Poignée limite
J'ai vu ce fil: Workaround for the WaitHandle.WaitAll 64 handle limit?
Je comprends l'idée générale, mais je suis la difficulté parce que je ne suis pas en utilisant un délégué mais
Je travaille essentiellement de cet exemple: http://msdn.microsoft.com/en-us/library/3dasc8as%28VS.80%29.aspx
ce lien http://www.switchonthecode.com/tutorials/csharp-tutorial-using-the-threadpool est similaire mais encore une fois la variable int gardant la trace des tâches est une variable membre.
Où dans l'exemple ci-dessus passerais-je l'entier threadCount? Est-ce que je le passe dans la méthode de rappel en tant qu'objet? Je pense que j'ai des problèmes avec la méthode de rappel et de passage par référence.
Merci Stephen,
Ce lien est pas tout à fait clair pour moi.
Permettez-moi de poster mon code pour me aider à préciser:
for (int flows = 0; flows < NumFlows; flows++)
{
ResetEvents[flows] = new ManualResetEvent(false);
ICalculator calculator = new NewtonRaphson(Perturbations);
Calculators[flows] = calculator;
ThreadPool.QueueUserWorkItem(calculator.ThreadPoolCallback, flows);
}
resetEvent.WaitOne();
Où puis-je passer ma variable THREADCOUNT. Je suppose qu'il doit être décrémenté dans calculator.ThreadPoolCallback?
Qu'est-ce que l'entier numérique numTask? –
Désolé, je crois que je voulais dire "threadCount" du premier lien. – bearrito
Point technique mineur: la limite de 64-handle est imposée par l'API Win32, pas .NET 3.5. Ainsi, chaque programme sur Windows a la même limitation. –