ملاحظة: يتم تعطيل الدالة أو الأسلوب أو الكائن أو الخاصية الموضحة في هذا الموضوع إذا كانت خدمة تعبير Microsoft Jet قيد التشغيل في وضع بيئة الاختبار المعزولة، مما يمنع تقييم التعبيرات التي يحتمل أن تكون غير آمنة. لمزيد من المعلومات حول وضع بيئة الاختبار المعزولة، ابحث عن "وضع بيئة الاختبار المعزولة" في التعليمات.
ينتج التنفيذ بحيث يمكن لنظام التشغيل معالجة الأحداث الأخرى.
بناء الجملة
DoEvents ( )
ملاحظات
ترجع الدالة DoEvents عددا صحيحا يمثل عدد النماذج المفتوحة في إصدارات مستقلة من Microsoft Visual Basic، مثل Visual Basic، Professional Edition. ترجع DoEvents صفرا في جميع التطبيقات الأخرى.
تمرر DoEvents التحكم إلى نظام التشغيل. يتم إرجاع عنصر التحكم بعد انتهاء نظام التشغيل من معالجة الأحداث في قائمة الانتظار الخاصة به وتم إرسال جميع المفاتيح في قائمة انتظار SendKeys .
تعد DoEvents مفيدة للغاية لأشياء بسيطة مثل السماح للمستخدم بإلغاء عملية بعد بدء تشغيلها، على سبيل المثال البحث عن ملف. بالنسبة للعمليات طويلة الأمد، يتم تحقيق العائد إلى المعالج بشكل أفضل باستخدام مؤقت أو تفويض المهمة إلى مكون ActiveX EXE. في الحالة الأخيرة، يمكن أن تستمر المهمة بشكل مستقل تماما عن التطبيق الخاص بك، ويهتم نظام التشغيل بالتعددية وتقطيع الوقت.
في أي وقت تقوم فيه بالتنازل مؤقتا إلى المعالج ضمن إجراء حدث، تأكد من عدم تنفيذ الإجراء مرة أخرى من جزء مختلف من التعليمات البرمجية قبل إرجاع الاستدعاء الأول؛ قد يتسبب هذا في نتائج غير متوقعة. بالإضافة إلى ذلك، لا تستخدم DoEvents إذا كانت التطبيقات الأخرى قد تتفاعل مع الإجراء الخاص بك بطرق غير متوقعة خلال الوقت الذي قمت فيه بالتحكم.
مثال
ملاحظة: توضح الأمثلة التالية استخدام هذه الدالة في وحدة Visual Basic for Applications (VBA). لمزيد من المعلومات حول العمل مع VBA، حدد مرجع المطور في القائمة المنسدلة بجوار البحث وأدخل مصطلحا واحدا أو أكثر في مربع البحث.
يستخدم هذا المثال دالة DoEvents للتسبب في التنفيذ للرتج إلى نظام التشغيل مرة واحدة كل 1000 تكرار للحلقة. ترجع DoEvents عدد نماذج Visual Basic المفتوحة، ولكن فقط عندما يكون التطبيق المضيف هو Visual Basic.
' Create a variable to hold number of
' Visual Basic forms loaded and visible. Dim I, OpenForms For I = 1 To 150000 ' Start loop. If I Mod 1000 = 0 Then ' If loop has repeated ' 1000 times. OpenForms = DoEvents ' Yield to operating system. End If Next I ' Increment loop counter.