8
votes

Comment créer un nouveau fil pour exécuter une action

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();
}


1 commentaires

La pile n'est pas plus grande. Il est en fait plus petit sur x64.


4 Réponses :


-1
votes

Essayez d'utiliser action , puis de lancer sur assistant dans le corps de l'action


0 commentaires

7
votes

Quelque chose comme ça devrait faire le tour: xxx


0 commentaires

9
votes

Je ne me dérangerais même pas avec paramétré.fr. / code>. Laissez le compilateur faire le travail sale: xxx pré>

bien sûr, vous pouvez le transporter plus loin et modifier la signature à: P>

private void ExecuteInBiggerStackThread(Action action) { ... }


3 commentaires

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.



3
votes

ou une version plus générique de la méthode .... xxx


0 commentaires