Ềm ặt kỹ thuật, phương thức ReleaseComObject không thực sự giải phóng đối tượng COM, nó chỉ giảm số lượng tham chiếu đến đối tượng Nếu số tham chiế u là

Một phần của tài liệu Các giải pháp lập trình C Sharp_9 pdf (Trang 52 - 53)

0, đối tượng COM sẽđược gii phóng. Tuy nhiên, nếu cùng th hin ca mt đối tượng COM được s dng ti nhiu mu mã lnh, nó phi được gii phóng các tượng COM được s dng ti nhiu mu mã lnh, nó phi được gii phóng các nơi đó trước khi được gii phóng khi b nh.

1

155..88 SSSSSSSSửửửửửửửử ddddddddụụụụụụụụnnnnnnnngggggggg tttttttthhhhhhhhôôôôôôôônnnnnnnngggggggg ssssssssốốốốốốốố ttttttttùùùùùùùùyyyyyyyy cccccccchhhhhhhhọọọọọọọọnnnnnnnn

Bn cn gi mt phương thc trong thành phn COM mà không phi truyn tt c các thông s cn thiết. c các thông s cn thiết.

S dng trường Type.Missing.

Hầu hết các phương thức trong .NET Framework đều được nạp chồng nhiều lần để bạn có thể gọi phiên bản yêu cầu chỉ những thông số do bạn cung cấp. Mặt khác, COM không hỗ trợ việc gọi phiên bản yêu cầu chỉ những thông số do bạn cung cấp. Mặt khác, COM không hỗ trợ việc nạp chồng phương thức. Thay vào đó, các thành phần COM thường sử dụng các phương thức với một danh sách dài các thông số tùy chọn. Không may là, C# không hỗ trợ thông số tùy chọn, nghĩa là người phát triển phải cung cấp thêm các giá trị không cần thiết khi truy xuất một thành phần COM. Và vì các thông số COM thường được truyền bằng tham chiếu nên mã lệnh của bạn không thể truyền một tham chiếu null, mà phải khai báo một biến đối tượng và rồi truyền biến đó.

Bạn có thể giảm nhẹ vấn đề đến một chừng mực nào đó bằng cách cung cấp trường

Type.Missing bất cứ khi nào muốn bỏ qua một thông số tùy chọn. Nếu cần truyền một thông số bằng tham chiếu, bạn chỉ cần khai báo một biến đối tượng, thiết lập nó là Type.Missing, và số bằng tham chiếu, bạn chỉ cần khai báo một biến đối tượng, thiết lập nó là Type.Missing, và sử dụng nó trong mọi trường hợp:

private static object n = Type.Missing;

Ví dụ dưới đây sử dụng đối tượng Word để tạo và hiển thị một tài liệu. Trong đó, có nhiều phương thức yêu cầu các thông số tùy chọn (được truyền bằng tham chiếu). Việc sử dụng phương thức yêu cầu các thông số tùy chọn (được truyền bằng tham chiếu). Việc sử dụng trường Type.Missing đơn giản hóa mã lệnh rất nhiều.

using System;

public class OptionalParameters {

private static object n = Type.Missing; private static void Main() {

// Chạy Word phía nền.

Word.ApplicationClass app = new Word.ApplicationClass(); app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;

// Tạo một tài liệu mới (không khả kiến đối với người dùng). Word.Document doc = app.Documents.Add(ref n, ref n, ref n,

ref n);

Console.WriteLine();

Console.WriteLine("Creating new document."); Console.WriteLine();

// Thêm một tiêu đề và hai hàng text.

Word.Range range = doc.Paragraphs.Add(ref n).Range; range.InsertBefore("Test Document");

string style = "Heading 1"; object objStyle = style; range.set_Style(ref objStyle);

range = doc.Paragraphs.Add(ref n).Range; range.InsertBefore("Line one.\nLine two."); range.Font.Bold = 1;

// Hiển thị Print Preview, làm cho Word trở nên khả kiến. doc.PrintPreview(); app.Visible = true; Console.ReadLine(); } } 1

155..99 SSSSSSSSửửửửửửửử ddddddddụụụụụụụụnnnnnnnngggggggg đđđđđđđđiiiiiiiiềềềềềềềềuuuuuuuu kkkkkkkkiiiiiiiiểểểểểểểểmmmmmmmm AAAAAAAAccccccccttttttttiiiiiiiivvvvvvvveeeeeeeeXXXXXXXX ttttttttrrrrrrrroooooooonnnnnnnngggggggg ........NNNNNNNNEEEEEEEETTTTTTTT----cccc----cccclllllllliiiiiiiieeeeeeeennnnnnnntttttttt

Bn cn đặt mt điu kim ActiveX trên mt ca sổứng dng .NET Framework.

S dng mt RCW (cũng ging như vi mt thành phn COM bình thường). Để

làm vic vi điu kim ActiveX khi thiết kế, thêm nó vào hp công c ca Visual Studio .NET. Studio .NET.

.NET Framework hỗ trợ như nhau đối với tất cả các thành phần COM, bao gồm điều kiểm

ActiveX. Điều khác nhau cơ bản là lớp RCW (cho điều kiểm ActiveX) dẫn xuất từ kiểu .NET

đặc biệt System.Windows.Forms.AxHost. Về mặt kỹ thuật, bạn thêm AxHost vào form, và nó sẽ giao tiếp với điều kiểm ActiveX phía hậu trường. Vì dẫn xuất từ giao tiếp với điều kiểm ActiveX phía hậu trường. Vì dẫn xuất từ

System.Windows.Forms.Control, nên AxHost cũng có các thuộc tính, phương thức, và sự kiện chuẩn như Location, Size, Anchor,.. Nếu RCW được sinh tự động, các lớp AxHost luôn bắt chuẩn như Location, Size, Anchor,.. Nếu RCW được sinh tự động, các lớp AxHost luôn bắt đầu bằng Ax.

Bạn có thể tạo một RCW cho một điều kiểm ActiveX cũng giống như cho bất cứ thành phần

COM nào khác bằng công cụ Tlbimp.exe hoặc tính năng Add Reference trong Visual Studio .NET, sau đó lập trình để tạo điều kiểm. Tuy nhiên, một cách tiếp cận dễ hơn trong Visual .NET, sau đó lập trình để tạo điều kiểm. Tuy nhiên, một cách tiếp cận dễ hơn trong Visual Studio .NET là thêm điều kiểm ActiveX vào hộp công cụ (xem mục 11.4 để biết thêm chi tiết). Chẳng có gì xảy ra khi bạn thêm một điều kiểm ActiveX vào hộp công cụ. Tuy nhiên, bạn có thể sử dụng biểu tượng trong hộp công cụ để thêm một thể hiện của điều kiểm vào form. Lần đầu bạn làm việc này, Visual Studio .NET sẽ tạo một InteropAssembly và thêm nó vào dự án của bạn. Ví dụ, nếu bạn thêm điều kiểm Microsoft Masked Edit (không có điều kiểm .NET

tương đương), Visual Studio .NET sẽ tạo một RCW Assembly có tên là AxInterop.MSMask.dll. Dưới đây là đoạn mã trong vùng designer dùng để tạo một thể hiện của điều kiểm này và Dưới đây là đoạn mã trong vùng designer dùng để tạo một thể hiện của điều kiểm này và thêm nó vào form:

this.axMaskEdBox1 = new AxMSMask.AxMaskEdBox();

Một phần của tài liệu Các giải pháp lập trình C Sharp_9 pdf (Trang 52 - 53)

Tải bản đầy đủ (PDF)

(53 trang)