كيف يمكنني تأخير تنفيذ التعليمات البرمجية في Visual Basic (VB6)?

StackOverflow https://stackoverflow.com/questions/95112

  •  01-07-2019
  •  | 
  •  

سؤال

أنا منذ فترة طويلة في 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 ، إلخ).

كيفية تحديد عندما قصفت عملية إنهاء:

إذا كنت تدعو عملية خارجية ثم كنت ، في الواقع ، واصفا ذلك بشكل غير متزامن.الرجوع إلى فوق MS دعم وثيقة كيفية الانتظار حتى الخارجي الخاص بك إكمال العملية.

كسر التعليمات البرمجية الخاصة بك ما يصل إلى 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)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top