我想知道是否有任何方法可以获得一个事件(或其他内容),告诉您何时在您的appdomain(C#应用程序)上创建了新线程?基本思想是,当创建新线程时,我需要使用一些设置“初始化”线程。
我不想全身心地去做我的代码,因为我不知道将来会怎样。
答案 0 :(得分:1)
创建一个线程静态变量,并在构造函数中初始化所需的任何内容。
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
}
}
然后在调用任何需要已建立环境的方法之前:
ThreadEnvironmentSettigns.Settings.EnsureSetup();
答案 1 :(得分:0)
我假设java加载器在另一个进程上执行。 .NET代码只是为命令行指定了正确的参数 - 然后您可以将环境变量用于整个过程。
环境变量是整个过程的全局变量(即所有线程都可以访问它们,甚至是新创建的线程)。这是how在C#中设置变量。