Mengapa beberapa orang menggunakan Finalizemetode di atas Disposemetode? Dalam situasi apa Anda akan menggunakan Finalizemetode di atas Disposemetode dan sebaliknya?
DataSet dan DataTable keduanya mengimplementasikan IDisposable, jadi, dengan praktik terbaik konvensional, saya harus memanggil metode Buang () mereka. Namun, dari apa yang saya baca sejauh ini, DataSet dan DataTable sebenarnya tidak memiliki sumber daya yang tidak dikelola, jadi Buang () sebenarnya tidak banyak berbuat. Plus, saya tidak bisa hanya menggunakan …
Sesuatu seperti: using (IDisposable disposable = GetSomeDisposable()) { //..... //...... return Stg(); } Saya percaya itu bukan tempat yang tepat untuk pernyataan kembali, bukan?
.NET IDisposable Pattern menyiratkan bahwa jika Anda menulis finalizer, dan mengimplementasikan IDisposable, finalizer Anda perlu secara eksplisit memanggil Dispose. Ini logis, dan itulah yang selalu saya lakukan dalam situasi langka di mana seorang finalis dijamin. Namun, apa yang terjadi jika saya hanya melakukan ini: class Foo : IDisposable { public …
Mulailah dengan kelas-kelas sederhana ini ... Katakanlah saya memiliki satu set kelas sederhana seperti ini: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool …
Saya ingin memicu tugas untuk dijalankan di thread latar belakang. Saya tidak ingin menunggu tugas selesai. Dalam .net 3.5 saya akan melakukan ini: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); Dalam .net 4 TPL adalah cara yang disarankan. Pola umum yang saya lihat direkomendasikan adalah: Task.Factory.StartNew(() => { DoSomething(); }); Namun, StartNew()metode …
Saya telah membuat kontrol pengguna WPF khusus yang dimaksudkan untuk digunakan oleh pihak ketiga. Kontrol saya memiliki anggota pribadi yang dapat dibuang, dan saya ingin memastikan bahwa metode pembuangannya akan selalu dipanggil setelah jendela / aplikasi yang memuatnya ditutup. Namun, UserControl tidak dapat dibuang. Saya mencoba mengimplementasikan antarmuka IDisposable dan …
Akar masalah saya adalah ketika usingmemanggil Disposea StreamWriter, itu juga membuang BaseStream(masalah yang sama dengan Close). Saya memiliki solusi untuk ini, tetapi seperti yang Anda lihat, ini melibatkan penyalinan aliran. Adakah cara untuk melakukan ini tanpa menyalin aliran? Tujuannya adalah untuk memasukkan konten string (aslinya dibaca dari database) ke dalam …
Saya memiliki kode berikut using(MemoryStream ms = new MemoryStream()) { //code return 0; } The dispose()metode ini disebut pada akhir usingpernyataan kawat gigi }yang benar? Karena I returnsebelum akhir usingpernyataan, apakah MemoryStreambenda tersebut akan dibuang dengan benar? Apa yang terjadi di sini?
Kapan saya mengimplementasikan IDispose di kelas sebagai lawan dari destruktor? Saya membaca artikel ini , tetapi saya masih kehilangan intinya. Asumsi saya adalah bahwa jika saya mengimplementasikan IDispose pada suatu objek, saya dapat secara eksplisit 'merusak' sebagai lawan menunggu pengumpul sampah untuk melakukannya. Apakah ini benar? Apakah itu berarti saya …
Adakah metode, atau cara ringan lainnya, untuk memeriksa apakah referensi ditujukan ke benda yang dibuang? PS - Ini hanya keingintahuan (tidur nyenyak, bukan dalam kode produksi). Ya, saya tahu saya dapat menangkap ObjectDisposedExceptionsaat mencoba mengakses anggota objek.