Tôi muốn biết, nếu tôi có một biến, ví dụ, một chuỗi, làm thế nào để vượt qua giá trị của nó vào miền ứng dụng mới của tôi:Làm thế nào để chuyển biến từ một miền ứng dụng khác
static string _str;
static void Main(string[] args) {
_str = "abc";
AppDomain domain = AppDomain.CreateDomain("Domain666");
domain.DoCallBack(MyNewAppDomainMethod);
AppDomain.Unload(domain);
Console.WriteLine("Finished");
Console.ReadKey();
}
static void MyNewAppDomainMethod() {
Console.WriteLine(_str); //want this to print "abc"
}
Cảm ơn
Cảm ơn. Bây giờ tôi muốn biết làm thế nào để có được thông tin trở lại appdomain chính của tôi. Đó là, trả lại một đối tượng. Cảm ơn! –
Và một câu hỏi khác. Tôi thấy AppDomainInitializerArguments chỉ chấp nhận một mảng các chuỗi. Trong trường hợp này tôi thực sự chỉ muốn dây, vì vậy không có vấn đề gì, nhưng nếu tôi muốn loại dữ liệu khác thì sao? Không có gì để làm về nó? –
Miền ứng dụng không chia sẻ một không gian bộ nhớ đối tượng và do đó, việc truyền các đối tượng xung quanh yêu cầu tuần tự hóa một số loại. Để trả về một đối tượng, bạn có thể DoCallBack trên appdomain ban đầu, nếu bạn có thể có được bàn tay của bạn trên nó (tôi không thấy một cách dễ dàng để làm như vậy mặc dù). Ngoài ra, bạn có thể thiết lập một số hình thức kênh liên kênh khác giữa các miền ứng dụng, ví dụ: một ống có tên. –