Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat memastikan pelupusan objek Interop Excel yang betul dalam C# untuk mengelakkan proses Excel.exe daripada masih aktif?
Mengelakkan proses excel.exe yang berterusan: Amalan terbaik untuk C# Excel Interop
Bekerja dengan objek Interop Excel dalam C#, terutamanya, memerlukan pengurusan sumber yang teliti untuk mencegah proses ApplicationClass
dari berlarutan selepas permohonan anda selesai. Walaupun dengan kod pembersihan, proses itu mungkin tetap aktif, menunjukkan pengendalian objek yang tidak betul. Excel.exe
contohnya, bukannya:
<code class="language-csharp">excelApp.Worksheets.Open(...); Marshal.ReleaseComObject(sheet);</code>Gunakan:
<code class="language-csharp">Worksheets sheets = excelApp.Worksheets; Worksheet sheet = sheets.Open(...); Marshal.ReleaseComObject(sheets); Marshal.ReleaseComObject(sheet);</code>dengan kritikal, elakkan panggilan ahli objek "Chaining" COM. Secara langsung memanggil ahli tanpa tugasan yang berubah -ubah mewujudkan objek pembalut yang bermasalah ini.
ingat untuk memasukkan pembersihan menyeluruh dalam blok
: finally
<code class="language-csharp">while (Marshal.ReleaseComObject(excelSheet) != 0) { } excelSheet = null; GC.Collect(); GC.WaitForPendingFinalizers();</code>Akhirnya, sedar bahawa debuggers boleh mengganggu pengumpulan sampah. Tanggalkan debugger sebelum menutup buku kerja Excel untuk memastikan pembersihan yang betul. Mengikuti langkah -langkah ini akan melepaskan objek interop dengan berkesan dan mencegah proses latar belakang yang tidak perlu.
Atas ialah kandungan terperinci Bagaimanakah saya dapat memastikan pelupusan objek Interop Excel yang betul dalam C# untuk mengelakkan proses Excel.exe daripada masih aktif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!