J'ai un problème avec Threadpooling ici, j'ai besoin d'aide s'il vous plaît. J'essaie d'écrire un générateur, et je dois permettre aux utilisateurs de générer jusqu'à 10 000 lignes avec le code ci-dessous. Le problème avec ceci est la ligneThread Pooling help
WaitHandle.WaitAll (doneEvents);
Ne peut gérer 64 WaitAll à la fois, Comment puis-je mieux appliquer le pool de threads à mon code dans ce cas?
public void GenerateInsertStatements(int iRequiredRows)
{
// One event is used for each row object
ManualResetEvent[] doneEvents = new ManualResetEvent[iRequiredRows];
Row[] rows = new Row[iRequiredRows];
for (int i = 0; i < iRequiredRows; i++)
{
doneEvents[i] = new ManualResetEvent(false);
Row row = new Row(this.Name, this.TableColumns, doneEvents[i]);
rows[i] = row;
ThreadPool.QueueUserWorkItem(row.ThreadPoolCallback, i);
}
WaitHandle.WaitAll(doneEvents);
using (sr = new StreamWriter(this.Name + ".sql"))
{
for(int i=0; i<rows.Length; i++)
{
WriteStatementToFile(i, rows[i].GeneratedInsertStatement);
}
}
}
Merci à l'avance
Avez-vous une meilleure idée de la façon dont je pouvais faire ce qui précède s'il vous plaît? Je commence tout juste à comprendre comment utiliser le thread-threading pour la solution afin de générer jusqu'à 10 000 lignes. – Kobojunkie
Eh bien, si j'avais une meilleure idée je l'aurais posté en premier lieu;). La solution de Gonzalo semble bonne aussi, honnêtement, je ne sais pas lequel est le meilleur ... –