Tôi có một khách hàng/đối tác đang cố gắng liên kết ứng dụng của họ với ứng dụng của chúng tôi bằng chức năng COM được tiếp xúc của chúng tôi. Cho đến nay, họ đã có một đối tượng COM đại diện cho một thể hiện của gói phần mềm của chúng tôi và sau đó sử dụng các phương thức COM của chúng tôi để lập trình xây dựng một cái gì đó cho người dùng dựa trên những gì họ đã làm trong ứng dụng của họ. Về cơ bản nó là một tính năng "xuất khẩu".Phát hành "quyền sở hữu" đối tượng COM trong .NET
Những gì họ đã yêu cầu tôi làm, mà tôi không thể tìm ra cách thực hiện là cho phép người dùng quyết định thời điểm phiên bản được đóng. Ý tôi là, khi gói phần mềm của chúng tôi được tải lên, nó có thể xem và được tương tác với người dùng. Khi họ hoàn thành, họ sẽ tự nhiên nhấp vào thập tự giá ở trên cùng bên phải để thoát khỏi phần mềm. Điều này không làm việc như đối tượng COM vẫn còn "hoạt động" trong ứng dụng của họ. Gói phần mềm của chúng tôi chỉ có thể được đóng bằng cách giết chết quá trình trong trình quản lý tác vụ trong khi ứng dụng tải nó qua COM vẫn mở. Sau khi ứng dụng của họ thoát, chúng tôi sẽ tự động đóng. Có vẻ như ứng dụng của họ "sở hữu" chúng tôi vì cuộc gọi COM.
Tôi đã tạo một ứng dụng demo nhanh trong C# để thử sử dụng những thứ như Marshal.FinalReleaseComObject(myObject)
không có kết quả.
Tôi nhận thấy rằng việc sử dụng COM cho loại điều này không thực sự là mục đích của nó, nhưng hy vọng có một số cách giải quyết khác? Khách hàng/đối tác đang sử dụng VB.NET nhưng C# vẫn ổn.
Hãy làm rõ nếu ứng dụng của bạn được tự động từ bên trong ứng dụng (tương tự như VBA scripting bên trong ứng dụng VS hoặc Office) hoặc từ bên ngoài (tương tự như sử dụng Tự động hóa Word để tạo tài liệu mới từ ứng dụng console/script của riêng bạn)? –
Họ không thể đóng cửa sổ? Điều đó không có ý nghĩa, bạn sẽ cần phải làm rõ. –
Đó là từ bên ngoài, họ đang sử dụng VB để bắt đầu một quá trình mới bằng cách tham khảo exe của chúng tôi và instantiating một đối tượng COM từ nó. Chúng tôi có một "Open" mà không chính xác những gì nó giống như âm thanh, mở ra một cửa sổ có thể sử dụng của gói phần mềm của chúng tôi. Trong điều khoản của việc không thể đóng cửa sổ, bạn không thể nhấp vào X màu đỏ ở phía trên bên phải, bạn cũng có thể nhưng không có gì xảy ra. Nó sẽ chỉ đóng khi ứng dụng VB của họ bị đóng. Tôi không biết nhiều về COM interop nhưng có vẻ như ứng dụng VB có quyền sở hữu hoặc là cha mẹ của quá trình đó. – sxthomson