Le titre le dit à peu près. J'ai des méthodes qui doivent courir sur un nouveau fil et que tout le code avant de créer le thread est à peu près la même chose, je pensais créer une fonction qui pourrait prendre comme paramètre que je dois invoquer.
Le problème est que je n'ai pas trouvé comment dire au fil qu'il doit exécuter l'action. Est-ce que c'est possible? Voici un petit échantillon de code de ce que j'essaie de faire. P>
private void ExecuteInBiggerStackThread(Action<Helper> action, Parameters parms) { ParameterizedThreadStart operation = new ParameterizedThreadStart(action);// here's the mess Thread bigStackThread = new Thread(operation, 1024 * 1024); bigStackThread.Start(parms); bigStackThread.Join(); }
4 Réponses :
Essayez d'utiliser action
assistant code> dans le corps de l'action p>
Quelque chose comme ça devrait faire le tour:
Je ne me dérangerais même pas avec bien sûr, vous pouvez le transporter plus loin et modifier la signature à: P> paramétré.fr. / code>. Laissez le compilateur faire le travail sale:
private void ExecuteInBiggerStackThread(Action action) { ... }
Comment la fonction ressemble-t-elle si vous "le porter un pas plus loin"?
Wow, cela a 10 ans ... pas sûr de ce que j'avais à l'esprit quand j'ai écrit ça. Mais ces jours-ci, je ne me dérangerais même pas avec ce style de filetage, je voudrais simplement utiliser des tâches et des méthodes asynchronisées pour le filetage.
Merci pour cet indice, j'ai essayé de remplacer les threads par les tâches et j'ai trouvé que cela fonctionne beaucoup mieux! Les Lambdas sont directement pris en charge avec des tâches.
ou une version plus générique de la méthode ....
La pile n'est pas plus grande. Il est en fait plus petit sur x64.