Düzeltme: bir DynamicResource kullanarak bir fırça nesnesi başvurulan bellek sızıntısı wpf uygulamada oluşur

Makale çevirileri Makale çevirileri
Makale numarası: 2651992 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Aşağıdaki senaryoyu düşünün:
  • Microsoft hedefleyen bir Microsoft Windows sunu Foundation (wpf) uygulaması oluşturun.net Framework 3.0 veya Microsoft.net Framework 3.5.
  • Uygulama, uygulama xaml dosyasında bir fırça nesnesi ve renk nesnesi tanımlar.
    • Fırça nesnesini kullanan bir DynamicResource renk nesne referansı. Örneğin,
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • Fırça nesne olarak başvurulan bir DynamicResource wpf pencere veya bir kullanıcı denetimi veya başka bir nesne. Örneğin,
      <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>
  • Açtığınızda veya pencere veya kullanıcı denetiminin kopyalarını kapatın.

Bu senaryoda, örnekleri atık olarak toplanmış (gc) öbek kökü ve serbest. Pencere veya kullanıcı denetimi giderek daha çok örneklerini oluşturuldukça, zamanla bir bellek sızıntısı oluşur. Sonuçta, aldığınız bir System.OutOfMemoryException özel durum.

Not Microsoft uygulama hedefleyen bu sorun oluşmaz.net Framework 4.

Neden

İç olay işleyicisine wpf çalıştırma dolanmadıklarından çünkü bu sorun oluşur. ResourceReferenceExpressionPencere veya kullanıcı denetimi kullanarak kaynakla ilişkili nesne. Pencere veya kullanıcı denetimi kapalı ve ayarlanmış için null olduğunda bu olay işleyicisi başvuru kaldırılmaz.

Çözüm

Düzeltme bilgileri

Desteklenen bir düzeltme Microsoft'tan edinilebilir. Ancak, düzeltmenin yalnızca bu makalede anlatılan sorunu gidermesi amaçlanmıştır. Bunu yalnızca bu sorunla karşılaşmış olan sistemlere uygulayın.

Bu sorunu çözmek için düzeltmeyi edinmek üzere Microsoft Müşteri Destek Hizmetleri'ne başvurun. Microsoft Müşteri Destek Hizmetleri telefon numaralarının ve destek ücretleriyle ilgili bilgi tam listesi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu belirlerse, özel durumlarda, destek aramaları için çözeceğini ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Önkoşullar

Bu düzeltmeyi uygulamak için Microsoft olması gerekir.net Framework 3.5.1 aşağıdaki işletim sistemlerinden birini çalıştıran bir bilgisayarda yüklü:
  • Windows 7 Service Pack 1 (SP1)
  • Windows Server 2008 R2 Service Pack 1 (SP1)


Yeniden başlatma gereksinimi

Etkilenen dosyaları kullanılıyorsa, bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekir.

Dosya bilgileri

Bu düzeltmenin genel sürümü dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahip aşağıdaki tabloda listelenen. Tarihler ve saatler için bu dosyalar, Eşgüdümlü Evrensel Saat (utc) listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. utc ve yerel saat arasındaki farkı bulmak için kullanın. Saat dilimi sekmesinde Tarih ve saat Denetim Masası'nda madde.

Fveya tüm desteklenen x 86 tabanlı sürümleri, Windows 7
Bu tabloyu kapaBu tabloyu aç
Dosya adıDosya sürümüDosya boyutuTarihSaatPlatform
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

Fveya tüm desteklenen x 64 tabanlı sürümleri, Windows 7 ve Windows Server 2008 r2
Bu tabloyu kapaBu tabloyu aç
Dosya adıDosya sürümüDosya boyutuTarihSaatPlatform
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



Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın:
  • Kullanımı birStaticResource Fırça nesnedeki renk nesne referansı. Örneğin, ilk bölümü için aşağıdaki "Belirtiler" bölümünde açıklanan xaml dosyasında kod Değiştir:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • Ayarlamax: paylaşılan yanlış Eğer seçeneği DynamicResource kullanılır. Örneğin, ilk bölümü için aşağıdaki "Belirtiler" bölümünde açıklanan xaml dosyasında kod Değiştir:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



Referanslar

Hakkında daha fazla bilgi için DynamicResource Biçimlendirme uzantısı aşağıdaki msdn Web sitesini ziyaret edin:
DynamicResource biçimlendirme uzantısı hakkında genel bilgiler
wpf Fırçalar hakkında daha fazla bilgi için aşağıdaki msdn Web sitesini ziyaret edin:
wpf Fırçalar hakkında genel bilgiler

Durum

Microsoft bunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.

Özellikler

Makale numarası: 2651992 - Last Review: 10 Ocak 2012 Salı - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:2651992

Geri Bildirim Ver

 

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