這可能嗎?爲不同的線程使用不同的.config文件(.NET/C#)
我使用這個調用來實例化新的線程:
this.RunningThread = new Thread(new ParameterizedThreadStart(this.Run));
可選,我想不同的.config的位置傳遞給它。如果有的話,有可能如何?
謝謝!
這可能嗎?爲不同的線程使用不同的.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