ملاحظة
يتم تعطيل الوظيفة أو الطريقة أو العنصر أو الخاصية الموضحة في هذا الموضوع إذا كانت خدمة Microsoft Jet Expression Service قيد التشغيل في وضع الحماية، مما يمنع تقييم التعبيرات التي يحتمل أن تكون غير آمنة. لمزيد من المعلومات حول وضع الحماية، ابحث عن "وضع الحماية" في "تعليمات".
ينتج التنفيذ بحيث يتمكن نظام التشغيل من معالجة الأحداث الأخرى.
بناء الجملة
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.