Trong C# (.NET), có thể hai luồng chạy trong cùng một ứng dụng có KHÁC "WorkingFolders" ??Có thể sử dụng Ứng dụng đa luồng C# seprate WorkingDirectories cho mỗi luồng không?
Tốt nhất tôi có thể biết, câu trả lời sẽ là "KHÔNG". Tôi nghĩ DIR LÀM VIỆC được thiết lập bởi QUY TRÌNH trong Win32 .. Tôi có sai ở đây không?
Theo mã kiểm tra sau, (cũng như lệnh gọi Win32 SetCurrentDirectory
API), điều này là KHÔNG, nhưng có ai tìm ra cách để làm cho nó có thể không?
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();
}
}
Tôi biết MỘT SỐ người ngoài kia phải chạy qua trước đây!
Mục tiêu của bạn trong việc cố gắng điều này là gì? Tốt hơn là chỉ thiết kế mã của bạn để cho phép bạn chuyển vào các thư mục thích hợp ... –
Có thể bằng cách tạo miền ứng dụng riêng cho mỗi chuỗi. Tôi đã thêm nhận xét này làm nhận xét vì hiện tại tôi không thể hiển thị ví dụ. – MarcF
@MarcF App Domains sẽ không thay đổi một bộ Môi trường cho mỗi Quy trình (FYI). –