Mengelakkan proses Excel yang berterusan dengan C# Excel Interop
Bekerja dengan Excel Interop dalam C# memerlukan pengurusan yang teliti terhadap objek COM untuk mengelakkan proses Excel yang berlarutan selepas permohonan anda selesai. Walaupun sesetengah pemaju menggunakan dalam gelung yang diikuti oleh koleksi sampah, ini tidak selalu mencukupi. Masalahnya sering berpunca daripada bagaimana objek com diakses. Marshal.ReleaseComObject
Bahaya double-dot
secara langsung mengakses ahli objek COM tanpa menyerahkannya kepada pembolehubah (mis.,) Mewujudkan rujukan tersembunyi yang menghalang pembersihan yang betul. C# mencipta pembungkus, tetapi pembungkus ini tidak dibebaskan, menjaga Excel berjalan. excelApp.Worksheets.Open(...)
Penyelesaian: Tugasan pembolehubah yang jelas
Kuncinya adalah untuk sentiasa menetapkan objek COM kepada pembolehubah sebelum menggunakan ahli mereka:
<code class="language-csharp">Worksheets sheets = excelApp.Worksheets; // Assign to a variable Worksheet sheet = sheets.Open(...); // ... your code ... Marshal.ReleaseComObject(sheets); Marshal.ReleaseComObject(sheet);</code>
. Marshal.ReleaseComObject
Pertimbangan Debugging
ingat bahawa debuggers boleh mengganggu pengumpulan sampah. Proses Excel yang diperhatikan semasa penyahpepijatan mungkin tidak mencerminkan tingkah laku sebenar dalam membina pelepasan. Sentiasa menguji pembersihan anda dengan teliti tanpa debugger yang dilampirkan.Atas ialah kandungan terperinci Bagaimanakah saya dapat membersihkan objek Interop Excel dengan berkesan dalam C# untuk mengelakkan proses Excel yang berlarutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!