为不同的线程使用不同的.config文件(.NET / C#)

时间:2011-02-26 21:19:57

标签: c# multithreading config

这可能吗?

我正在使用此调用来实例化新线程:

this.RunningThread = new Thread(new ParameterizedThreadStart(this.Run));

或者,我想将一个不同的.config位置传递给它。如果可能的话,有可能吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

不,.config文件与AppDomain关联,而不是与线程关联。在默认的CLR主机上,主应用程序域很难烘焙到app.exe.config文件,您无法更改它。可以通过AppDomainSetup.ConfigurationFile属性使用自己的.config文件配置新的AppDomains。

请注意将数据从一个应用程序域序列化到另一个应用程序所需的工作量,如果您真的对隔离代码感兴趣,这是您唯一想要做的事情。无论你想做什么原因,肯定有比AppDomain更好的方法来实现你的目标。

答案 1 :(得分:0)

只是传递一个代表:

private void Run(string configPath)
{

}

...
Thread thread = new Thread(()=> this.Run("foo.config")) ;
thread.Start();

答案 2 :(得分:0)

您可以尝试使用传递配置文件路径的ConfigurationManager.OpenExeConfiguration方法并返回Configuration object

我认为没有办法让ConfigurationManager.AppSettingsConfigurationManager.ConnectionStrings在不同的线程上返回不同的值,但您可以保留对OpenExeConfig方法返回的Configuration对象的引用并在你的代码中使用它。