แก้ไข: หน่วยความจำเกิดรั่วไหลในโปรแกรมประยุกต์ WPF วัตถุแปรงถูกอ้างถึง โดยใช้แบบ DynamicResource

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 2651992 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

พิจารณาสถานการณ์สมมติต่อไปนี้:
  • คุณสร้างแอพลิเคชันพื้นฐานในงานนำเสนอ Windows Microsoft (WPF) ที่มุ่งเป้าหมาย MicrosoftNET Framework 3.0 หรือ Microsoftข้อมูลเพิ่มเติม 3.5
  • แอพลิเคชันกำหนดวัตถุแปรงและวัตถุที่เป็นสีในแฟ้ม XAML ของแอพลิเคชัน
    • ใช้แปรงวัตถุแบบ DynamicResource เมื่อต้องการอ้างอิงวัตถุสี ตัวอย่าง
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • มีการอ้างอิงวัตถุ'แปรง'เป็นแบบ DynamicResource ในหน้าต่าง WPF หรือตัวควบคุมของผู้ใช้ หรือวัตถุอื่น ตัวอย่าง
      <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>
  • เปิด หรือปิดการอินสแตนซ์ของหน้าต่างหรือผู้ใช้สามารถควบคุม

ในสถานการณ์สมมตินี้ อินสแตนซ์ซึ่งมีรากอยู่ใน heap (GC) รวบรวมขยะ และนำออกใช้ไม่ ช่วงเวลา การรั่วไหลของหน่วยความจำให้เกิดขึ้นขณะมีสร้างอินสแตนซ์เพิ่มเติม และเพิ่มเติมของหน้าต่างหรือการควบคุมผู้ใช้ ขั้นสุดท้าย คุณได้รับการ System.OutOfMemoryException ข้อยกเว้น

หมายเหตุ ปัญหานี้เกิดขึ้นเมื่อโปรแกรมประยุกต์ Microsoft ที่มุ่งเป้าหมายข้อมูลเพิ่มเติม 4

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจาก WPF ขณะใช้งานสายตัวจัดการเหตุการณ์ภายในไป ResourceReferenceExpressionวัตถุที่เชื่อมโยงกับทรัพยากรที่ใช้หน้าต่างหรือการควบคุมผู้ใช้ การอ้างอิงตัวจัดการเหตุการณ์นี้จะไม่ถูกเอาออกเมื่อหน้าต่างหรือตัวควบคุมของผู้ใช้เป็นค่า null และปิดการตั้งค่าการ

การแก้ไข

ข้อมูลโปรแกรมแก้ไขด่วน

ขณะนี้มีโปรแกรมแก้ไขด่วนที่ได้รับการสนับสนุนจาก Microsoft อย่างไรก็ตาม จะมีวัตถุประสงค์เพื่อการแก้ไขปัญหาที่อธิบายในบทความนี้ ใช้กับระบบที่พบปัญหานี้เท่านั้น

เมื่อต้องแก้ไขปัญหานี้ ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายการทั้งหมดของหมายเลขโทรศัพท์บริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่าย โปรดเยี่ยมชมเว็บไซต์ของ Microsoft ต่อไปนี้:
ฝ่าย
หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมที่มีค่าใช้จ่ายสำหรับการสนับสนุนทางโทรศัพท์อาจถูกยกเลิก Professional สนับสนุน Microsoft เป็นตัวกำหนดว่า การปรับปรุงเฉพาะจะแก้ปัญหาของคุณ ค่าใช้จ่ายในการสนับสนุนปกติจะให้คำถามเพิ่มเติมและเรื่องอื่น ๆ ที่ไม่สามารถจัดการในการปรับปรุง

ข้อกำหนดเบื้องต้น

เมื่อต้องใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมี Microsoftโปรดเรียก 3.5.1 ที่ติดตั้งบนคอมพิวเตอร์ที่เรียกใช้ระบบปฏิบัติการต่อไปนี้:
  • Windows 7 Service Pack 1 (SP1)
  • Windows Server 2008 R2 Service Pack 1 (SP1)


ความต้องการเริ่มการทำงาน

คุณต้องเริ่มระบบของคอมพิวเตอร์ใหม่หลังจากที่คุณใช้โปรแกรมแก้ไขด่วนนี้ถ้ามีการใช้แฟ้มได้รับผลกระทบ

แฟ้มข้อมูล

รุ่นสากลของ hotfix นี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่า) ซึ่งแสดงอยู่ในตารางต่อไปนี้ วันและเวลาของแฟ้มเหล่านี้แสดงในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้มข้อมูล จะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้ โซนเวลา ในการ วันและเวลา รายการใน'แผงควบคุม'

Fหรือทั้งหมดที่สนับสนุน Windows รุ่นที่ใช้ x86 7
ยุบตารางนี้ขยายตารางนี้
ชื่อแฟ้มรุ่นของแฟ้มขนาดของแฟ้มวันเวลาแพลตฟอร์ม
Presentationframework.dll3.0.6920.57385,283,84016 2011 ธ.ค.01:49x 86
Windowsbase.dll3.0.6920.57381,253,37616 2011 ธ.ค.01:49x 86
Presentationcore.dll3.0.6920.57384,218,88016 2011 ธ.ค.01:49x 86
Presentationframework.dll3.0.6920.57385,283,84016 2011 ธ.ค.01:49x 86
Presentationhostdll.dll3.0.6920.5738131,36016 2011 ธ.ค.01:49x 86
Presentationhost.exe4.0.40305.0296,22416 2011 ธ.ค.01:49x 86
Presentationhostproxy.dll4.0.31106.0100,13616 2011 ธ.ค.01:49x 86
Windowsbase.dll3.0.6920.57381,253,37616 2011 ธ.ค.01:49x 86

Fหรือสนับสนุนทั้งหมด x การปรับรุ่น ของ Windows 7 และ Windows Server 2008 R2
ยุบตารางนี้ขยายตารางนี้
ชื่อแฟ้มรุ่นของแฟ้มขนาดของแฟ้มวันเวลาแพลตฟอร์ม
Presentationcore.dll3.0.6920.57383,998,72016 2011 ธ.ค.01:42x 64
Presentationframework.dll3.0.6920.57384,640,76816 2011 ธ.ค.01:42x 86
Presentationhostdll.dll3.0.6920.5738172,32016 2011 ธ.ค.01:42x 64
Presentationhost.exe4.0.31106.0321,31216 2011 ธ.ค.01:42x 64
Presentationhostproxy.dll4.0.31106.0110,88816 2011 ธ.ค.01:42x 64
Windowsbase.dll3.0.6920.57381,114,11216 2011 ธ.ค.01:42x 86
Presentationframework.dll3.0.6920.57385,283,84016 2011 ธ.ค.01:49x 86
Windowsbase.dll3.0.6920.57381,253,37616 2011 ธ.ค.01:49x 86
Presentationcore.dll3.0.6920.57384,218,88016 2011 ธ.ค.01:49x 86
Presentationframework.dll3.0.6920.57385,283,84016 2011 ธ.ค.01:49x 86
Presentationhostdll.dll3.0.6920.5738131,36016 2011 ธ.ค.01:49x 86
Presentationhost.exe4.0.40305.0296,22416 2011 ธ.ค.01:49x 86
Presentationhostproxy.dll4.0.31106.0100,13616 2011 ธ.ค.01:49x 86
Windowsbase.dll3.0.6920.57381,253,37616 2011 ธ.ค.01:49x 86



การหลีกเลี่ยงปัญหา

เมื่อต้องหลีกเลี่ยงปัญหานี้ ใช้หนึ่งในวิธีต่อไปนี้:
  • ใช้แบบStaticResource เมื่อต้องการอ้างอิงวัตถุสีในวัตถุ'แปรง' ตัวอย่างเช่น เปลี่ยนส่วนแรกของโค้ดในแฟ้ม XAML ที่กล่าวถึงในส่วน "อาการ" ต่อไปนี้:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • การตั้งค่านี้x: ที่ใช้ร่วมกัน false ถ้าตัวเลือกนี้ DynamicResource มีใช้ ตัวอย่างเช่น เปลี่ยนส่วนแรกของโค้ดในแฟ้ม XAML ที่กล่าวถึงในส่วน "อาการ" ต่อไปนี้:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการ DynamicResource ส่วนขยายของมาร์กอัป โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ MSDN:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ'แปรง' WPF โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ MSDN:
ข้อมูลทั่วไปเกี่ยวกับ'แปรง' WPF

สถานะ

Microsoft ยืนยันว่า ปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่ระบุไว้ในส่วน"ใช้งาน"

คุณสมบัติ

หมายเลขบทความ (Article ID): 2651992 - รีวิวครั้งสุดท้าย: 10 มกราคม 2555 - Revision: 1.0
ใช้กับ
  • 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
Keywords: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:2651992

ให้ข้อเสนอแนะ

 

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