C# (.NET) では、同じアプリケーションで実行されている 2 つのスレッドが異なる "WorkingFolders" を持つことができますか??
私が知る限り、答えは「NO」です。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();
}
}
私は、誰かが以前にこれに出くわしたに違いないことを知っています!