为不同的线程使用不同的.config文件(.NET/C#)
这可能吗?为不同的线程使用不同的.config文件(.NET/C#)
我使用这个调用来实例化新的线程:
this.RunningThread = new Thread(new ParameterizedThreadStart(this.Run));
可选,我想不同的.config的位置传递给它。如果有的话,有可能如何?
谢谢!
不,一个.config文件与一个AppDomain关联,而不是一个线程。在默认的CLR主机上,主appdomain被硬件烘焙到app.exe.config文件,您无法更改它。新的AppDomain可以通过AppDomainSetup.ConfigurationFile属性使用自己的.config文件进行配置。
要小心将数据从一个appdomain序列化到另一个appdomain所需的努力,如果您真的对隔离代码感兴趣,这是您只想做的事情。无论你想要做什么的原因,肯定有一个比AppDomain更好的方式来实现你的目标。
只是传递一个委托:
private void Run(string configPath)
{
}
...
Thread thread = new Thread(()=> this.Run("foo.config")) ;
thread.Start();
一起提供的原始.config。我并不想将它作为参数传递,但我的意思是让不同的线程自动消耗不同的.config文件 – Igorek 2011-02-26 22:05:11
你可以尝试使用ConfigurationManager.OpenExeConfiguration
方法,您通过配置文件的路径,并返回一个Configuration
object。
我不认为有任何办法有ConfigurationManager.AppSettings
或ConfigurationManager.ConnectionStrings
在不同的线程返回不同的值,但是你可以保持由OpenExeConfig
方法返回的配置对象的引用,并使用你的代码中。
你是说在线程中执行的代码没有改变,但仍然使用不同的.config?或者你可以将配置文件的路径传递给线程上执行的代码吗? – rene 2011-02-26 21:24:11
我想将不同的配置文件传递给仅在新线程上执行的代码。主线程应该使用与应用程序 – Igorek 2011-02-26 21:37:55