Rumah >pembangunan bahagian belakang >C++ >Adakah Saya Perlu Membuang Tugasan TPL Kebakaran-dan-Lupakan?
Tidak Melupuskan Tugasan TPL: Akibat dan Penyelesaian Ganti
Apabila mencetuskan tugasan untuk dijalankan di latar belakang tanpa menunggu selesai, perkara biasa penggunaan Task.Factory.StartNew() menimbulkan persoalan tentang keperluan memanggil Dispose() pada Task yang dikembalikan objek. Walaupun MSDN mengesyorkan melupuskan semua tugas, isu melupuskan tugas dalam senario khusus ini sering diabaikan.
Mengenai akibat tidak melupuskan, Stephen Toub, ahli pasukan Microsoft PFX, menjelaskan bahawa Task.Dispose() wujud untuk mengendalikan pemegang acara yang digunakan dalam senario menunggu tertentu. Walau bagaimanapun, apabila sambungan adalah cara utama untuk mengakses tugas, pemegang acara ini tidak akan diperuntukkan. Stephen Toub mencadangkan untuk bergantung pada pemuktamadan untuk mengurus tugasan ini.
Dokumentasi rasmi mengenai topik ini adalah terhad. Walau bagaimanapun, catatan blog Stephen Toub, "Adakah saya perlu melupuskan Tugasan?," mengembangkan isu ini dan menyerlahkan penambahbaikan yang diperkenalkan dalam .Net 4.5.
Secara amnya, anda tidak perlu melupuskan daripada objek Tugas pada kebanyakan masa. Sebab untuk melupuskan termasuk membebaskan sumber yang tidak terurus dengan segera dan mengelakkan kos pemuktamad. Walau bagaimanapun, pertimbangan ini biasanya tidak digunakan pada objek Tugas:
Kaedah alternatif untuk tugasan kebakaran-dan-lupa dengan TPL:
Jika melupuskan objek tugasan masih menjadi kebimbangan, terdapat alternatif pendekatan:
Atas ialah kandungan terperinci Adakah Saya Perlu Membuang Tugasan TPL Kebakaran-dan-Lupakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!