2012-03-12 26 views
6

Chúng tôi có một vấn đề rất phức tạp interop trong đó các chủ đề được sử dụng để khởi tạo một hệ thống bên thứ 3 phải là cùng một thread được sử dụng để chấm dứt nó. Không làm được điều này dẫn đến bế tắc. Chúng tôi đang thực hiện interop từ một dịch vụ WCF được lưu trữ trong IIS. Hiện tại việc dọn dẹp này được thực hiện để xử lý và thường hoạt động rất tốt. Thật không may, dưới tải nặng IIS sẽ làm một unload unload và chúng tôi không bao giờ nhận được để gọi vứt bỏ. Chúng ta có thể chuyển logic shutdown thành một finalizer quan trọng nhưng điều đó không giúp ích gì vì chúng ta không còn quyền truy cập vào thread khởi tạo nữa! Tại thời điểm này, truy vấn duy nhất của chúng tôi dường như đang thông báo cho CLR rằng AppDomain hiện có khả năng ở trạng thái bị hỏng. Tuy nhiên, tôi không chắc chắn làm thế nào để làm điều đó (hoặc nếu nó thậm chí có thể). Có thể đây là tiện ích của các hợp đồng ở cấp lớp nhưng tôi thừa nhận rằng tôi không thực sự hiểu đầy đủ về những hợp đồng đó.CERs có thể được sử dụng để đảm bảo rằng quyết toán không bao giờ được gọi?

CHỈNH SỬA: Ngoài ra, điều này có thể được xem dưới dạng sự cố mối quan hệ chuỗi trong trình hoàn thiện. Nếu ai có giải pháp thông minh, tôi là tất cả các tai :)

+0

Thành phần bạn đang xử lý với nguồn gốc hoặc được quản lý? – JaredPar

+0

Gốc. Đó là một api cho một hệ thống với quản lý bộ nhớ riêng của nó, vv – Jeff

Trả lời

1

Cố gắng tách mã phụ thuộc vào sự phụ thuộc gốc vào ứng dụng dịch vụ Windows độc lập nếu có thể. Nếu nó không thể làm việc tốt với WCF/IIS, bạn nên tránh các xung đột thay vì chiến đấu chống lại nó.

+0

Có, bạn có thể đúng. Chúng tôi đã nói về điều này mặc dù tôi không muốn đưa ra chỉ trong :) – Jeff

+0

Ngoài ra, tôi cần phải nói - Tôi không chắc chắn điều này thực sự giải quyết vấn đề kể từ khi CLR unloads có lẽ là một thực tế của cuộc sống (mặc dù ít có khả năng giải pháp của bạn, tôi chắc chắn). – Jeff

+0

Bạn có nghĩa là bạn cảm thấy xấu về việc tải ứng dụng? Đó là do thiết kế, vì các hồ bơi ứng dụng sẽ được tái chế định kỳ (tìm hiểu các thiết lập), và ASP.NET cũng khởi động lại, http://stackoverflow.com/questions/829392/how-to-discover-the-reason-of- asp-net-application-restart –

Các vấn đề liên quan