2010-09-23 4 views
1

Je voudrais savoir s'il existe un moyen d'obtenir un événement (ou autre chose) qui vous indique quand un nouveau thread a été créé sur votre appdomain (application C#)? L'idée de base est que lorsqu'un nouveau thread est créé, j'ai besoin d '"initialiser" le thread avec certains paramètres.savez-vous quand un nouveau thread a été créé dans l'AppDomain que votre application exécute après?

Je ne veux pas aller partout dans mon code et le faire, car je ne sais pas ce que l'avenir nous réserve.

+0

Qu'est-ce que « les paramètres » Espérez-vous d'initialiser le fil avec? Si le thread est en cours d'exécution, il est un peu tard pour ça. –

+0

nous définissons des choses d'environnement pour certains chargeurs java .... cela doit être fait sur n'importe quel thread (et déjà fait manuellement maintenant) avant de pouvoir l'utiliser –

+4

Donc, pas beaucoup de paramètres de thread, mais les paramètres d'environnement que les opérations suivantes effectuées par le fil va utiliser. Des sons comme ces threads devraient être gérés par une classe qui effectue la configuration, si je vous comprends. –

Répondre

0

Je suppose que les chargeurs Java s'exécutent sur l'autre processus. Et le code .NET spécifie juste les arguments corrects pour la ligne de commande - alors vous pouvez utiliser des variables d'environnement pour l'ensemble du processus.

Les variables d'environnement sont globales pour l'ensemble du processus (c'est-à-dire que toutes les unités d'exécution auront accès à celles-ci, même celles qui viennent d'être créées). Voici how pour définir une variable en C#.

1

Créez une variable statique de thread et initialisez tout ce dont vous avez besoin dans le constructeur.

class ThreadEnvironmentSettings 
{ 
    [ThreadStatic] 
    public static readonly ThreadEnvironmentSettings Settings = 
     new ThreadEnvironmentSettings(); 

    public ThreadEnvironmentSettings() 
    { 
     SetupJavaEnvironment(); 
    } 

    public void EnsureSetup(){ 
     // Doesn't do anything but required to 'touch' the thread variable 
    } 
} 

avant d'appeler toutes les méthodes nécessitant un environnement mis en place:

ThreadEnvironmentSettigns.Settings.EnsureSetup(); 
Questions connexes