Tôi có một ứng dụng sử dụng hội đồng Interop Office. Tôi biết về "Runtime Callable Wrapper (RCW)" được quản lý bởi thời gian chạy. Nhưng tôi không chắc chắn làm thế nào số lượng tham chiếu được tăng lên. MSDN nói,RCW & đếm tham chiếu khi sử dụng COM interop trong C#
RCW chỉ giữ một tham chiếu đến đối tượng COM được bao bọc bất kể số lượng khách hàng được quản lý gọi là bao nhiêu.
Nếu tôi hiểu nó một cách chính xác, trên ví dụ sau,
using Microsoft.Office.Interop.Word;
static void Foo(Application wrd)
{
/* .... */
}
static void Main(string[] args)
{
var wrd = new Application();
Foo(wrd);
/* .... */
}
Tôi đi qua các ví dụ wrd
đến phương pháp khác. Nhưng điều này không làm tăng số lượng tham chiếu nội bộ. Vì vậy, tôi tự hỏi về những kịch bản số tham chiếu được tăng lên? Bất cứ ai có thể chỉ ra một kịch bản mà số tham chiếu được tăng lên?
Ngoài ra tôi đọc một số blog nói rằng tránh sử dụng dấu chấm kép khi lập trình với các đối tượng COM. Một cái gì đó như, wrd.ActiveDocument.ActiveWindow
. Tác giả tuyên bố rằng trình biên dịch tạo các biến riêng biệt để giữ các giá trị sẽ tăng bộ đếm tham chiếu. IMHO, điều này là sai và ví dụ đầu tiên chứng minh điều này. Đúng không?
Mọi trợ giúp sẽ tuyệt vời!
Marshall.AddRef & Marshall.Release trở đếm tham chiếu mới cho các đối tượng COM. Bạn không chắc chắn nó chính xác như thế nào nhưng ít nhất bạn có thể kiểm tra yêu cầu của tác giả. – Arseny