رفتن به مطلب
  • 0

حلقه فور و صبر کردن برای انجام عملیات


sepidpor

سوال


           For n=tm1 To ts2


   Dim dd As DownloadData
   dd.url = "http://www.uploadhosting.co/uploads/5/"&n&".txt"
   dd.EventName = "dd"
   dd.Target = Me
   CallSubDelayed2(DownloadService, "StartDownload", dd)

 اینجا می خوام صبر کنه تا عملیات دانلود تموم شه بعد بره نکست...

           Next

کسی می دونه باید چیکار کنم تو این کدی که توضیح دادم

هنوز فایل کامل دانلود نشده میره نکست ولی من می خوام بعد این که فایل دانلود شد نکست شه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

8 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

یه داده گلوبال تعریف کن توی دانلود سرویس از نوع boolean

بعد با استفاده از do until سیستمو بفرست دنبال نخود سیاه تا زمانی که اون داده true بشه.

از طرف دیگه توی دانلود سرویس وقتی دانلود تکمیل شد اون داده رو true کن.

Sub Process_Globals
   Dim a As Boolean = False
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
   For n = tm1 To ts2
       Dim dd As DownloadData
       dd.url = "http://www.uploadhosting.co/uploads/5/"&n&".txt"
       dd.EventName = "dd"
       dd.Target = Me
       CallSubDelayed2(DownloadService, "StartDownload", dd)
           Do Until a = True
               sleep(2000)
           Loop
    Next
End Sub
Sub sleep(ms As Long)
   Dim now As Long
   If ms > 1000 Then ms =1000   'avoid application not responding error
   now=DateTime.now
   Do Until (DateTime.now>now+ms)
   DoEvents
   Loop
End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

Sub sleep(ms As Long)
   Dim now As Long
   If ms > 1000 Then ms =1000   'avoid application not responding error
   now=DateTime.now
   Do Until (DateTime.now>now+ms)
   DoEvents
   Loop
End Sub  

تو این کدی که نوشتی چه اتفاقی می افته؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

از کتابخانه HTTPUTIL2 استفاده کنید بعد از دانلود کامل میتوانید دستورات را صادر کنید

Sub Activity_Create(FirstTime As Boolean)
   Dim job1, job2, job3 As HttpJob
   job1.Initialize("Job1", Me)

   'Send a GET request
   job1.Download2("http://www.basic4ppc.com/print.php", _
       Array As String("first key", "first value :)", "second key", "value 2"))

   'Send a POST request
   job2.Initialize("Job2", Me)
   job2.PostString("http://www.basic4ppc.com/print.php", "first key=first value&key2=value2")

   'Send a GET request
   job3.Initialize("Job3", Me)
   job3.Download("http://www.basic4ppc.com/forum/images/categories/android.png")
End Sub

Sub JobDone (Job As HttpJob)
   Log("JobName = " & Job.JobName & ", Success = " & Job.Success)
   If Job.Success = True Then
       Select Job.JobName
           Case "Job1", "Job2"
               'print the result to the logs
               Log(Job.GetString)
           Case "Job3"
               'show the downloaded image
               Activity.SetBackgroundImage(Job.GetBitmap)
       End Select
   Else
       Log("Error: " & Job.ErrorMessage)
       ToastMessageShow("Error: " & Job.ErrorMessage, True)
   End If
   Job.Release
End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

Sub sleep(ms As Long)
   Dim now As Long
   If ms > 1000 Then ms =1000   'avoid application not responding error
   now=DateTime.now
   Do Until (DateTime.now>now+ms)
   DoEvents
   Loop
End Sub  

تو این کدی که نوشتی چه اتفاقی می افته؟

به مدت 2000 میلی ثانیه(2 ثانیه) سیستم میره دنبال نخود سیا....

دقیقا 2 ثانیه صبر می کنه....

توی سایت اصلی هم خود Erl این تابع رو برای مکث یا همون وقفه در برنامه توصیه کرده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به مدت 2000 میلی ثانیه(2 ثانیه) سیستم میره دنبال نخود سیا....

دقیقا 2 ثانیه صبر می کنه....

توی سایت اصلی هم خود Erl این تابع رو برای مکث یا همون وقفه در برنامه توصیه کرده.

سلام

فرض کنید ما 4 تا ایمیج ویو داریم میخوایم با دستور setvisibleanimated اونها رو به ترتیب و با وقفه 1 ثانیه به نمایش بذاریم. یعنی هرکدومشون در عرض 1000 میلی ثانیه یکی پس از دیگری مرئی بشن .

میشه کدش رو بذارید یا روشش رو بگید؟

یعنی باید بعد از هر img.setvisibleanimated یه do until ... بذاریم؟ میشه کدش رو توضیح بدید.

ممنون

کسی نیست جواب ما رو بده؟!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به مدت 2000 میلی ثانیه(2 ثانیه) سیستم میره دنبال نخود سیا....

دقیقا 2 ثانیه صبر می کنه....

توی سایت اصلی هم خود Erl این تابع رو برای مکث یا همون وقفه در برنامه توصیه کرده.

سلام

فرض کنید ما 4 تا ایمیج ویو داریم میخوایم با دستور setvisibleanimated اونها رو به ترتیب و با وقفه 1 ثانیه به نمایش بذاریم. یعنی هرکدومشون در عرض 1000 میلی ثانیه یکی پس از دیگری مرئی بشن .

میشه کدش رو بذارید یا روشش رو بگید؟

یعنی باید بعد از هر img.setvisibleanimated یه do until ... بذاریم؟ میشه کدش رو توضیح بدید.

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای ایجاد وقفه یک ثانیه ای (1000 میلی ثانیه) بعد از دستور 1 به صورت زیر کد  رو وارد می کنیم

دستور 1
                sleep(1000)
دستور 2



که منتقل میشه به حلقه مربوطه برای ایجاد وقفه:
 

Sub sleep(ms As Long)    Dim now As Long
    If ms > 1000 Then ms =1000   'avoid application not responding error'
    now=DateTime.now
    Do Until (DateTime.now>now+ms)
    DoEvents
    Loop
End Sub

و وقفه رو ایجاد میکنه و دستور2 رو انجام میده
که البته برای جلوگیری از کرش شدن برنامه، زمانهای بیش از یک ثانیه تبدیل به یک ثانیه خواهند شد.
مشکل من توی دستور زیر بود که باید do until  و  loop رو حذف می کردم (که البته نمیدونم نقشش چی هست)
 

Do Until a = True
          sleep(2000)
Loop

 

 

فقط سوالی که برام میمونه اینه که دستور DoEvents دقیقا چیکار می کنه؟!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه میخوای ایمیج ویوها به ترتبیت نمایش بدی از animation استفاده کن

اگه میخوای سورس قرا میدم بهتره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...