В С# (.NET), два потока, запущенные в одном приложении, имеют РАЗЛИЧНЫЕ "Рабочие папки"
Насколько я могу судить, ответ будет "НЕТ". Я думаю, что WORKING DIR установлен PROCESS в Win32.. Я здесь не прав?
Согласно следующему тестовому коду (а также вызов API Win32 SetCurrentDirectory
), это НЕ возможно, но кто-нибудь понял способ сделать это возможным?
using System;
using System.Threading;
public class TestClass {
public ManualResetEvent _ThreadDone = new ManualResetEvent(false);
public static void Main() {
Console.WriteLine(Environment.CurrentDirectory);
Thread _Thread = new Thread(new ParameterizedThreadStart(Go));
TestClass test = new TestClass();
_Thread.Start(test);
if(test._ThreadDone.WaitOne()) {
Console.WriteLine("Thread done. Checking Working Dir...");
Console.WriteLine(Environment.CurrentDirectory);
}
}
public static void Go(object instance) {
TestClass m_Test = instance as TestClass;
Console.WriteLine(Environment.CurrentDirectory);
System.IO.Directory.SetCurrentDirectory("L:\\Projects\\");
Console.WriteLine(Environment.CurrentDirectory);
m_Test._ThreadDone.Set();
}
}
Я знаю, что кто-то там должен был наткнуться на это раньше!