FIX: أنت قد تلاحظ حدوث تسرب للذاكرة عند استخدام عنصر التحكم DateTimePicker في .NET Framework 1.0

ترجمات الموضوعات ترجمات الموضوعات
معرف المقالة: 813354 - عرض المنتجات التي تنطبق عليها هذه المقالة.
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
توسيع الكل | طي الكل

في هذه الصفحة

الأعراض

إذا قمت بإنشاء أحد تطبيقات باستخدام Microsoft .NET Framework الإصدار 1.0 استخدام عنصر التحكم DateTimePicker في التطبيق قد تلاحظ حدوث تسرب للذاكرة عند تشغيل التطبيق.

السبب

تحدث هذه المشكلة بسبب جامع البيانات المهملة لا يجمع الذاكرة غير قابل للوصول. عنصر تحكم DateTimePicker مقترن المفوض Microsoft.Win32.UserPreferenceChangedEventHandler. عند التخلص من كائن عنصر التحكم DateTimePicker لا يتم ألغى هذا المفوض الإشارة القيمة. لذلك، يمنع هذا المفوض جامع البيانات المهملة من تجميع كائن التحكم DateTimePicker.

الحل

لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لبرنامج .NET Framework 1.0.

للحصول على أحدث حزمة خدمة قم بزيارة موقع Microsoft التالي على الويب:
http://www.microsoft.com/downloads/details.aspx?familyid=6978D761-4A92-4106-A9BC-83E78D4ABC5B&displaylang=en

تصريح

أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على". تم تصحيح هذه المشكلة لأول مرة في Microsoft .NET Framework 1.0 Service Pack 3.

معلومات أخرى

خطوات إعادة إنشاء السلوك

  1. إنشاء تطبيق Microsoft Windows. للقيام بذلك، اتبع الخطوات التالية:
    1. بدء تشغيل Microsoft Visual Studio .NET.
    2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد.
    3. ضمن أنواع Project ، انقر فوق Visual C# المشاريع.
    4. ضمن قوالب ، انقر فوق تطبيق Windows.
    5. في المربع الاسم، اكتب MyProject ومن ثم انقر فوق موافق. افتراضياً، يتم إنشاء نموذج المسمى Form1.
    6. من القائمة عرض، انقر فوق مربع الأدوات.
    7. إضافة ثلاثة عناصر تحكم مربع نص إلى نموذج Form1. افتراضياً، يتم إنشاء عنصر تحكم مربع نصtextBox1 عنصر تحكم مربع نصtextBox2 والتحكم مربع نصtextBox3.
    8. إضافة عنصري تحكم زر إلى النموذج Form1. افتراضياً، يتم إنشاء عنصر تحكم زرbutton1 وعنصر تحكم زرbutton2.
    9. إضافة التعليمات البرمجية التالية إلى معالج الأحداث Form1_Load من النموذج Form1.
      GC.Collect();
      GC.WaitForPendingFinalizers();
      long before = GC.GetTotalMemory(true);
      textBox1.Text ="Before test: " + before.ToString();
      أسلوب GC.GetTotalMemory استرداد عدد وحدات البايت المخصصة حالياً في الذاكرة التي تمت إدارتها.
    10. في نموذج Form1 انقر نقراً مزدوجاً فوق button1 ثم قم بإضافة التعليمة البرمجية التالية إلى معالج الأحداث button1_Click النموذج Form1.
      long after;
      for (int i=0; i<100; i++) 
      {
      DateTimePicker dtp=new DateTimePicker();	
      dtp.Dispose();
      dtp=null;
      }
      after = GC.GetTotalMemory(true);
      textBox2.Text = " After test: " + after.ToString();
    11. في نموذج Form1 انقر نقراً مزدوجاً فوق button2 ثم قم بإضافة التعليمة البرمجية التالية إلى معالج الأحداث button2_Click في النموذج Form1.
      GC.Collect();
      GC.WaitForPendingFinalizers();
      long after = GC.GetTotalMemory(true);
      textBox2.Text = " After Garbage Collection: " + after.ToString();
      أسلوب GC.Collect يفرض على المهملة وحاول تجميع غير قابلة للوصول و dereferenced الذاكرة بالكامل.
    12. في القائمة ملف، انقر فوق حفظ الكل لحفظ كافة الملفات.
  2. إنشاء ثم قم بتشغيل تطبيق Windows. للقيام بذلك، اتبع الخطوات التالية:
    1. في القائمة إنشاء ، انقر فوق بنية الحل.
    2. من القائمة تصحيح ، انقر فوق ابدأ. يظهر مربع الحوار Form1. يظهر عدد وحدات البايت التي يتم تخصيصها في الذاكرة التي تمت إدارتها في مربع النص textBox1.
    3. انقر فوق button1.

      إنشاء مثيل من عنصر التحكم DateTimePicker في وقت التشغيل التطبيق ثم ثم disposes عنصر التحكم DateTimePicker. يحدث هذا السلوك 100 مرة. عدد وحدات البايت في الذاكرة التي تمت إدارتها بعد تكرار 100 يظهر في مربع النص textBox2. لا يجمع جامع البيانات المهملة مواقع الذاكرة غير قابلة للوصول.
    4. انقر فوق button2.

    عدد وحدات البايت التي تظل في الذاكرة التي تمت إدارتها بعد التطبيق باستدعاء أداة تجميع مجمعي البيانات المهملة تظهر في مربع النص textBox2. قد تلاحظ أن معظم يمكن الوصول إلى الذاكرة ما زالت في الذاكرة التي تمت إدارتها.
للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرض المقالة "في قاعدة معارفMicrosoft":
824684وصف للمصطلحات القياسية التي يتم استخدام إلى وصف تحديثات برامج Microsoft

مراجع

لمزيد من المعلومات حول المفوض UserPreferenceChangedEventHandler شبكة مطوري Microsoft التالية (MSDN) قم بزيارة موقع ويب:
http://msdn2.microsoft.com/en-us/library/microsoft.win32.userpreferencechangedeventhandler(vs.71).aspx
لمزيد من المعلومات حول فئة DateTimePicker قم بزيارة موقع MSDN التالي:
http://msdn2.microsoft.com/en-us/library/system.windows.forms.datetimepicker(vs.71).aspx

الخصائص

معرف المقالة: 813354 - تاريخ آخر مراجعة: 11/ربيع الثاني/1435 - مراجعة: 1.5
تنطبق على
  • Microsoft .NET Framework 1.0
كلمات أساسية: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmemory kbgarbagecollect kbforms kbcode kbbug kbfix kbqfe kbnetframe100presp3fix KB813354 KbMtar
ترجمة آلية
هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية
اضغط هنا لرابط المقالة باللغة الانجليزية813354

Kontaktieren Sie uns, um weitere Hilfe zu erhalten

Kontaktieren Sie uns, um weitere Hilfe zu erhalten
Wenden Sie sich an den Answer Desk, um professionelle Hilfe zu erhalten.