Memadamkan Fail yang Dikunci oleh Proses Lain dalam .NET
Mengalih keluar fail yang sedang digunakan oleh proses lain memberikan cabaran biasa dalam pembangunan .NET. Contoh biasa melibatkan aplikasi yang memuatkan imej dari cakera ke dalam memori; pemadaman fail ini kemudiannya boleh membuktikan sukar.
Masalah ini baru-baru ini diserlahkan dalam pertanyaan pembangun. Pembangun cuba memadamkan fail yang digunakan oleh aplikasi mereka, walaupun selepas mengalih keluar elemen UI dan menetapkan rujukan imej kepada null
. Walaupun langkah-langkah ini, IOException
ralat berterusan, menunjukkan fail kekal dikunci.
Membuka Kunci Fail
Punca utama selalunya terletak pada kutipan sampah. Dalam .NET, objek yang tidak dirujuk dijadualkan untuk dipadamkan oleh pengumpul sampah, tetapi ini bukan serta-merta. Kelewatan ini boleh mengakibatkan pemegang fail terbuka, walaupun selepas objek imej yang sepadan dialih keluar daripada memori.
Penyelesaian melibatkan memulakan kutipan sampah secara manual dan menunggu penyiapan pemuktamad yang belum selesai. Coretan kod berikut menggambarkan ini:
<code class="language-csharp">System.GC.Collect(); System.GC.WaitForPendingFinalizers(); File.Delete(picturePath);</code>
Panggilan GC.Collect()
dan GC.WaitForPendingFinalizers()
memaksa pengumpulan sampah serta-merta, melepaskan sebarang rujukan yang berlarutan pada objek imej dan membolehkan pemadaman fail berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Fail yang Dikunci oleh Proses Lain dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!