อาการ
คุณอาจพบปัญหาอย่างใดอย่างหนึ่งต่อไปนี้เมื่อคุณแสดงกราฟิกโดยใช้ Windows Presentation Foundation (WPF) ในแอปพลิเคชันที่ใช้ .NET Framework 3.5 Service Pack 1 (SP1)
ปัญหาที่ 1
เมื่อคุณเปลี่ยนค่าของคุณสมบัติ VisualBrush.Visual ในแอปพลิเคชัน WPF แอปพลิเคชันจะหยุดทํางาน
ปัญหาที่ 2
หน่วยความจําพร่องขาดไปเกิดขึ้นในเธรดการแสดงของแอปพลิเคชัน WPF เมื่อคุณดําเนินการอย่างใดอย่างหนึ่งต่อไปนี้:
คุณสามารถใช้ไปป์ไลน์การแสดงภาพซอฟต์แวร์เพื่อแสดงฉาก 3 มิติที่มีวัตถุ VisualBrush หรือวัตถุ DrawingBrush ตัวอย่างเช่น คุณกําลังใช้ไปป์ไลน์การแสดงซอฟต์แวร์เมื่อคุณดําเนินการอย่างใดอย่างหนึ่งต่อไปนี้:
- คุณแสดงฉากโดยใช้คลาส RenderTargetBitmap
- คุณพิมพ์ฉาก
- คุณตั้งค่าคุณสมบัติระดับการแสดงเป็น 0
- คุณแสดงฉากผ่านการเชื่อมต่อเดสก์ท็อประยะไกล
คุณแสดงฉากโดยใช้คลาส WriteableBitmap บนคอมพิวเตอร์ที่ไม่ได้ใช้ Windows Display Driver Model (WDDM)
คุณสามารถใช้ไปป์ไลน์การแสดงภาพฮาร์ดแวร์เพื่อแสดงฉากโดยใช้วัตถุ VisualBrush แบบเรียงต่อกันหรือวัตถุ DrawingBrush แบบเรียงต่อกันบนคอมพิวเตอร์ที่ไม่ได้ใช้ WDDM
ปัญหาที่ 3
แอปพลิเคชัน WPF ที่ใช้ Windows Crash แบบเลเยอร์เมื่อคุณดําเนินการอย่างใดอย่างหนึ่งต่อไปนี้:
- คุณทําให้คอมพิวเตอร์ที่ใช้ Windows XP Display Driver Model (XPDDM) เข้าสู่โหมดสแตนด์บาย และจากนั้น คุณกลับสู่การทํางานจากโหมดสแตนด์บาย
- คุณสลับไปยังโหมดคอนโซลแบบเต็มหน้าจอบน Windows XP
สาเหตุ
สาเหตุที่ 1
ปัญหานี้เกิดขึ้นเนื่องจากข้อผิดพลาดทั่วไปถูกส่งกลับจากเธรดแสดงผลเมื่อการดําเนินการในเธรดถูกเรียงลําดับอย่างไม่ถูกต้อง การดําเนินการเหล่านี้ทําให้วัตถุลูกแยกออกจากวัตถุแม่ที่เป็น Null
ตัวอย่างเช่น วัตถุ Visual ต้องถูกเอาออกจากวัตถุ VisualBrush ก่อนที่จะถูกแยกออกจากวัตถุ VisualBrush อย่างไรก็ตาม การดําเนินการเพื่อเอาวัตถุ Visual อาจเรียงลําดับอย่างไม่ถูกต้อง ดังนั้น วัตถุ Visual จะแยกออกจากวัตถุแม่ที่เป็น Null
สาเหตุที่ 2
ปัญหานี้เกิดขึ้นเนื่องจากมีข้อผิดพลาดในการนับการอ้างอิงในเธรดการแสดง
สาเหตุที่ 3
ปัญหานี้เกิดขึ้นเนื่องจากรหัสข้อผิดพลาด Win32 ได้รับการจัดการอย่างไม่ถูกต้อง
การแก้ปัญหา
เมื่อต้องการแก้ไขปัญหานี้ ให้ใช้แพคเกจโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความต่อไปนี้ของ Microsoft Knowledge Base:
2667241 ชุดรวมอัปเดตพร้อมใช้งานสําหรับ Windows Presentation Foundation (WPF) สําหรับ Microsoft .NET Framework 3.5
ข้อมูลเพิ่มเติม
ผลลัพธ์สแตก
System.InvalidOperationException: An unspecified error occurred on the render thread.
at System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode)
at System.Windows.Media.MediaContext.NotifyChannelMessage()
at System.Windows.Interop.HwndTarget.HandleMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
สถานะ
Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"