FIX: Kebocoran memori terjadi dalam aplikasi WPF ketika objek sikat direferensikan dengan menggunakan DynamicResource

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 2651992 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Pertimbangkan skenario berikut:
  • Anda membuat aplikasi Microsoft Windows Presentation Foundation (WPF) yang menargetkan Microsoft.NET Framework 3.0 atau Microsoft.NET Framework 3.5.
  • Aplikasi mendefinisikan sebuah kuas objek dan objek warna dalam file XAML aplikasi.
    • Menggunakan sikat objek DynamicResource untuk referensi objek warna. Sebagai contoh,
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • Sikat objek yang dirujuk sebagai DynamicResource di jendela WPF atau kontrol pengguna atau objek lain. Sebagai contoh,
      <Window x:Class="WpfApplication6.Window1"
      
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      
      Title="Window1" Height="300" Width="300" Background="{DynamicResource brush1}">
      
      </Window>
  • Anda membuka atau menutup contoh jendela atau kontrol pengguna.

Dalam skenario ini, contoh berakar dalam mengumpulkan sampah (GC) tumpukan dan tidak dirilis. Seiring waktu, kebocoran memori terjadi sebagai contoh yang lebih banyak dan lebih dari jendela atau kontrol pengguna dibuat. Akhirnya, Anda menerima System.OutOfMemoryException pengecualian.

Catatan Masalah ini tidak terjadi ketika aplikasi target Microsoft.NET Framework 4.

PENYEBAB

Masalah ini terjadi karena WPF run-time kabel internal event handler untuk ResourceReferenceExpressionobjek yang berhubungan dengan sumber daya yang jendela atau kontrol pengguna menggunakan. Referensi handler acara ini tidak dihapus ketika jendela atau kontrol pengguna tertutup dan diatur ke null.

PEMECAHAN MASALAH

Informasi perbaikan terbaru

Perbaikan terbaru yang didukung saat ini tersedia dari Microsoft. Namun, hal ini dimaksudkan untuk memperbaiki hanya masalah dijelaskan artikel ini. Gunakan hanya pada sistem yang mengalami masalah khusus ini.

Untuk mengatasi masalah ini, hubungi layanan dukungan pelanggan Microsoft untuk mendapatkan perbaikan terbaru. Untuk daftar lengkap nomor telepon layanan dukungan pelanggan Microsoft dan informasi mengenai biaya dukungan, kunjungi website Microsoft berikut ini:
http://support.Microsoft.com/contactus/?ws=support
Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan dukungan mungkin dibatalkan apabila teknisi dukungan Microsoft menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berhubungan dengan pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.

Prasyarat

Untuk menerapkan perbaikan terbaru ini, Anda harus memiliki Microsoft.NET Framework 3.5.1 yang diinstal pada komputer yang menjalankan salah satu sistem operasi berikut:
  • Windows 7 Paket Layanan 1 (SP1)
  • Windows Server 2008 R2 Paket Layanan 1 (SP1)


Kebutuhan restart

Anda harus me-restart komputer setelah Anda menerapkan perbaikan terbaru ini jika file yang terkena sedang digunakan.

Informasi file

Versi global perbaikan terbaru ini memiliki atribut berkas (atau atribut berkas yang lebih baru) yang didaftar di dalam tabel berikut. Tanggal dan waktu untuk berkas-berkas ini tercantum dalam waktu Universal Terkoordinasi (UTC). Ketika Anda melihat informasi berkas, waktunya akan diubah ke waktu lokal. Untuk menemukan perbedaan waktu UTC dan waktu lokal, gunakan Zona waktu tab di Tanggal dan waktu item dalam Panel kontrol.

Fatau semua didukung x 86 berbasis versi Windows 7
Perkecil tabel iniPerbesar tabel ini
Nama fileVersi berkasUkuran fileTanggalWaktuPlatform
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Dec-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Dec-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Dec-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86

Fatau semua didukung versi berbasis 64 Windows 7 dan Windows Server 2008 R x2
Perkecil tabel iniPerbesar tabel ini
Nama fileVersi berkasUkuran fileTanggalWaktuPlatform
Presentationcore.dll3.0.6920.57383,998,72016-Dec-201101: 42x 64
Presentationframework.dll3.0.6920.57384,640,76816-Dec-201101: 42x 86
Presentationhostdll.dll3.0.6920.5738172,32016-Dec-201101: 42x 64
Presentationhost.exe4.0.31106.0321,31216-Dec-201101: 42x 64
Presentationhostproxy.dll4.0.31106.0110,88816-Dec-201101: 42x 64
Windowsbase.dll3.0.6920.57381,114,11216-Dec-201101: 42x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Dec-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Dec-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Dec-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86



TEKNIK PEMECAHAN MASALAH

Untuk mengatasi masalah ini, gunakan salah satu metode berikut:
  • PenggunaanStaticResource untuk referensi objek warna dalam objek kuas. Misalnya, mengubah bagian pertama dari kode dalam file XAML yang disebutkan di bagian "Gejala" sebagai berikut:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • Mengaturx: berbagi pilihan untuk palsu jika DynamicResource digunakan. Misalnya, mengubah bagian pertama dari kode dalam file XAML yang disebutkan di bagian "Gejala" sebagai berikut:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



REFERENSI

Untuk informasi lebih lanjut tentang DynamicResource markup ekstensi, kunjungi website MSDN berikut:
Informasi umum tentang ekstensi markup DynamicResource
Untuk informasi lebih lanjut tentang WPF kuas, kunjungi website MSDN berikut:
Informasi umum tentang WPF sikat

STATUS

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di dalam bagian "Berlaku untuk".

Properti

ID Artikel: 2651992 - Kajian Terakhir: 10 Januari 2012 - Revisi: 1.0
Berlaku bagi:
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.0 Service Pack 1
  • Microsoft .NET Framework 3.0 Service Pack 2
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 3.5 Service Pack 1
Kata kunci: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:2651992

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com