In C# (.NET), due thread in esecuzione nella stessa applicazione hanno DIVERSI "WorkingFolders" ??Un'applicazione multithreaded C# può utilizzare le WorkingDirectories seprate per thread?
Come meglio posso dire, la risposta sarebbe "NO". Penso che il DIR di LAVORO sia impostato dal PROCESSO in Win32. Ho sbagliato qui?
In base al seguente codice di test, (come pure la chiamata API Win32 SetCurrentDirectory
), questo NON è possibile, ma qualcuno ha escogitato un modo per renderlo possibile?
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();
}
}
So che QUALCUNO là fuori deve essersi imbattuto in questo prima!
Qual è il tuo obiettivo nel tentare questo? In genere è preferibile semplicemente progettare il codice per consentire di passare in cartelle appropriate ... –
Probabilmente creando un dominio app separato per thread. Ho aggiunto questo come commento perché attualmente non riesco a mostrare un esempio. – MarcF
@MarcF App Domains non modificherà l'unico set di impostazioni per processo (FYI). –