在 C# (.NET) 中,在同一个应用程序中运行的两个线程可以有不同的“WorkingFolders”吗?
据我所知,答案是“不”。我认为 WORKING DIR 是由 Win32 中的 PROCESS 设置的。我在这里错了吗?
根据以下测试代码(以及 Win32 SetCurrentDirectory
API 调用),这是不可能的,但有没有人想出办法让它成为可能?
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();
}
}
我知道外面一定有人遇到过这个!