كيف يمكنني تأخير تنفيذ التعليمات البرمجية في Visual Basic (VB6)?
سؤال
أنا منذ فترة طويلة في VB6 التي أريد أن أنهي قبل تنفيذ السطر التالي من التعليمات البرمجية.كيف يمكن أن أفعل ذلك ؟ المدمج في وظيفة ؟ هل يمكنني التحكم متى الانتظار ؟
تافهة سبيل المثال:
Call ExternalLongRunningProcess
Call DoOtherStuff
كيف يمكنني تأخير 'DoOtherStuff'?
المحلول
VB.Net:وأود أن استخدام WaitOne الحدث التعامل معها.
VB 6.0:رأيت DoEvents حلقة.
Do
If isSomeCheckCondition() Then Exit Do
DoEvents
Loop
وأخيرا, هل يمكن أن مجرد النوم:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 10000
نصائح أخرى
في حين Nescio هو الجواب (DoEvents) العمل ، فإنه سوف يسبب التطبيق الخاص بك استخدام 100 ٪ من وحدة المعالجة المركزية واحدة.النوم تجعل واجهة المستخدم لا تستجيب.ما تحتاجه هو مزيج من اثنين ، تركيبة سحرية ويبدو أن تعمل بشكل أفضل هو:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
While IsStillWaitingForSomething()
DoEvents
DoEvents
Sleep(55)
Wend
لماذا اثنين DoEvents واحد ينام لمدة 55 ميلي ثانية ؟ النوم من 55 ميلي ثانية هو أصغر شريحة VB6 يمكن التعامل معها باستخدام اثنين DoEvents هو مطلوب أحيانا في الحالات عندما فائقة الاستجابة المطلوبة (ليس عن طريق API ، ولكن إذا كان يمكنك تطبيق يتم الاستجابة إلى خارج الأحداث ، SendMessage, Interupts ، إلخ).
كسر التعليمات البرمجية الخاصة بك ما يصل إلى 2 العمليات.تشغيل أول ، ثم تشغيل "تشغيل طويلة عملية" ، ثم تشغيل العملية الثانية.
تشغيل العملية طويلة الامد في منتصف الحالية العملية وانتظر حتى يكتمل.
أتمنى أن أضيف فقط .net framework system.dll أو ما إلى مراجع المشروع بحيث يمكنك فقط القيام بذلك:
Dim ALongTime As Integer = 2000
System.Threading.Thread.Sleep(ALongTime)
...في كل مرة.لدي VB6 ، VB.net 2008 على الجهاز الخاص بي ، دائما من الصعب بالنسبة لي أن التبديل بين مختلف جدا IDE.
System.Threading.Thread.Sleep(500)