Khi b?n t? đ?ng m?t ?ng d?ng Microsoft Office t?
Microsoft Visual Basic.NET ho?c Microsoft Visual C#.NET, các ?ng d?ng văn ph?ng không ph?i b? khi
b?n g?i các
B? thu?c lá phương pháp.
Khi Visual Studio.Các cu?c g?i NET COM m?t đ?i tư?ng t? qu?n l?
M?, nó s? t? đ?ng t?o ra m?t Wrapper Callable Runtime (RCW). RCW
marshals cu?c g?i gi?a các.NET ?ng d?ng và các đ?i tư?ng COM. RCW gi? m?t
tham kh?o đ?m trên đ?i tư?ng COM. V? v?y, n?u t?t c? các tài li?u tham kh?o chưa
phát hành vào RCW, các đ?i tư?ng COM không b? thu?c lá.
Đ? đ?m b?o r?ng các ?ng d?ng văn ph?ng quits, h?y ch?c ch?n r?ng
r?ng m? t? đ?ng hóa c?a b?n đáp ?ng các tiêu chí sau:
- Tuyên b? t?ng đ?i tư?ng như là m?t bi?n m?i. Ví d?, thay đ?i
d?ng m? sau
oBook = oExcel.Workbooks.Add()
đ?n sau đây:
dim oBooks as Excel.Workbooks
oBooks = oExcel.Workbooks
oBook = oBooks.Add()
- S? d?ng System.Runtime.InteropServices.Marshal.ReleaseComObject khi b?n đ? k?t thúc b?ng cách s? d?ng m?t đ?i tư?ng. Decrements này các
tham kh?o tính c?a RCW.
- Đ? phát hành tài li?u tham kh?o đ? bi?n, h?y đ?t bi?n
tương đương v?i Không có g? ho?c Null.
- S? d?ng các B? thu?c lá phương th?c c?a đ?i tư?ng ?ng d?ng văn ph?ng b?o v?i máy ch? đ?
D?ng l?i.
Đi?u này
hành vi là do thi?t k?.
Các bư?c đ? t?o l?i hành vi
- B?t đ?u Visual Studio.NET.
- Trên các T?p tin tr?nh đơn, nh?p vào M?i sau đó b?m D? án. Dư?i Visual Basic d? án, ch?n ?ng d?ng Windows và nh?p vào Ok. Form1 đư?c t?o ra theo m?c đ?nh.
- Thêm m?t tham chi?u đ?n các Microsoft Excel đ?i tư?ng thư vi?n. Đ? th?c hi?n vi?c này, h?y làm theo các bư?c sau:
- Trên các D? án tr?nh đơn, nh?p vào Thêm tài li?u tham kh?o.
- Trên các COM tab, xác đ?nh v? trí thư vi?n đ?i tư?ng cho Excel và b?m Ch?n.
Cho Microsoft Excel 2002: Microsoft Excel 10,0 đ?i tư?ng thư vi?n
Lưu ? N?u b?n không làm như v?y, khuyên r?ng b?n
t?i v? và cài đ?t Microsoft Office XP chính Interop h?i (PIAs). Đ? bi?t thêm chi ti?t v? Office XP PIAs, nh?p vào s? bài vi?t sau đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP chính interop h?i đ?ng (PIAs) có s?n đ? t?i v?
For Microsoft Office Excel 2003: Microsoft Excel 11,0 đ?i tư?ng thư vi?n - Nh?p vào Ok trong các Thêm tài li?u tham kh?o h?p tho?i đ? ch?p nh?n c?a b?n l?a ch?n.
- Trên các Xem tr?nh đơn, nh?p vào H?p công c?, và sau đó kéo m?t Nút ki?m soát vào Form1.
- B?m đúp Button1. C?a s? m? cho các h?nh th?c xu?t hi?n.
- Thêm m? sau vào phía trên c?a Form1.vb:
Imports Microsoft.Office.Interop
- Thay th? m? sau trong c?a s? m?
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
v?i nh?ng đi?u sau:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oApp As New Excel.Application()
Dim oBook As Excel.Workbook = oApp.Workbooks.Add
Dim oSheet As Excel.Worksheet = oApp.ActiveSheet
oSheet = Nothing
oBook.Close(False)
oBook = Nothing
oApp.Quit()
oApp = Nothing
Debug.WriteLine("Sleeping...")
System.Threading.Thread.Sleep(5000)
Debug.WriteLine("End Excel")
End Sub
- Nh?n F5 đ? ch?y các ?ng d?ng.
- M? Windows Task Manager. Trong Visual Studio, hi?n th? các
Đ?u ra c?a s? đ? xem các thông đi?p g? l?i. Nh?p vào nút l?nh và lưu ? r?ng
m?t th? hi?n c?a Excel.exe xu?t hi?n trong các Quy tr?nh danh sách.
- Th? hi?n c?a Excel v?n ch?y trong danh sách công vi?c th?m chí
sau khi ?ng d?ng đ? k?t thúc ng?. Đóng h?p tho?i và lưu ? r?ng
Excel không c?n xu?t hi?n trong các Quy tr?nh danh sách.
- Khi b?n th?c hi?n các bư?c trong ph?n "Gi?i quy?t",
các ?ng d?ng văn ph?ng ra kh?i sau khi nó b?n phát hành cu?i cùng bi?n. Thay th? các
ch?c năng trong bư?c 5 v?i đo?n m? sau:
Private Sub NAR(ByVal o As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
Catch
Finally
o = Nothing
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oApp As New Excel.Application()
Dim oBooks As Excel.Workbooks = oApp.Workbooks
Dim oBook As Excel.Workbook = oBooks.Add
Dim oSheet As Excel.Worksheet = oApp.ActiveSheet
NAR(oSheet)
oBook.Close(False)
NAR(oBook)
NAR(oBooks)
oApp.Quit()
NAR(oApp)
Debug.WriteLine("Sleeping...")
System.Threading.Thread.Sleep(5000)
Debug.WriteLine("End Excel")
End Sub
N?u b?n đang s? d?ng Visual C#.NET, tham kh?o các m? cho các
NAR() ch?c năng:
private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch {}
finally
{
o = null;
}
}
Gi?i đáp th?c m?c
Lưu ? r?ng n?u b?n làm theo các bư?c đư?c mô t? trong các
"Bư?c đ? tái s?n xu?t hành vi" ph?n, và các máy ch? v?n c?n không t?t
xu?ng, b?n có th? s? d?ng các
GC.Collect() phương pháp và các
GC.WaitForPendingFinalizers() phương pháp sau khi b?n phát hành các đ?i tư?ng cu?i cùng. B?i v? th?i gian
th?c hi?n b? sưu t?p rác v? RCW, các
GC.Collect() phương pháp bu?c các b? thu rác đ? ch?y và có th? phát hành b?t k?
tài li?u tham kh?o RCW v?n c?n. Các
GC.Collect() phương pháp c? g?ng đ? đ?i l?i t?i đa b? nh? có s?n. Lưu ? r?ng
Đi?u này không đ?m b?o r?ng t?t c? b? nh? s? đư?c khai hoang.
ID c?a bài: 317109 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
- Microsoft Visual Basic .NET 2003 Standard Edition
- Microsoft Visual C# .NET 2003 Standard Edition
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Visual C# .NET 2002 Standard Edition
| kbautomation kbprb kbmt KB317109 KbMtvi |
Máy d?chQUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:
317109
(http://support.microsoft.com/kb/317109/en-us/
)