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

مشکل کارنکردن دکمه برگشت تا زمان اتمام وقفه(sleep)


aazizz

سوال

سلام به همه دوستان من با کدای زیر به مولتی پنلم وقفه میدم اما باید صبر کنم تا وقفه کامل بشه و کل مولتی پنل لود بشه تا بتونم از اون صفحه بیرون بیام یعنی دکمه برگشت(back) کار نمی کنه جایی از کدم اشکال داره یا باید چیز دیگه ای بهش اضافه کنم؟

میخوام کاربر اگه خواست وسطای لود مولتی پنل هم بتونه خارج بشه

دوستان خواهشا کمکم کنین

sleep(500)




Sub sleep(ms As Long)
	Dim now As Long
	If ms > 1000 Then ms =1000
	now=DateTime.now
	Do Until (DateTime.now>now+ms)
	DoEvents
	Loop
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

مشکل از این کد نیست.

مشکل از اونجاییه که لود سنگین اطلاعات روی mainThread انجام میشه احتمالا.

باید multy thread  برنامه رو بنویسید.

 

مشکل از اون نیس دوستمون آقا نیما درست میگن یه دستور Exit داره که قبل از اتمام حلقه ازش خارج بشه فقط نمیدونم دقیقا چی بود و بنویسم

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

@@nima_j,

 

 

با چه کدی؟کجاش؟

اگه با کد بگین ممنون میشم

 

بجای دستور sleep دستور DoEvents قرار بدید.

بنده در یک بازی از حلقه های پی در پی و دستور sleep استفاده کردم (اشتباه کردم) ، وقتی قصد داشتم از اکتیویتی خارج بشم ، خارج نمی شد.

اگر قصد حرکت شی ای رو دارید از کتابخونه انیمیشن استفاده کنید.

چون احتمالا با دستور DoEvents هم مشکلتون برطرف نمیشه.

و بقول دوستمون از چند نخی استفاده کنید.

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

بجای دستور sleep دستور DoEvents قرار بدید.

بنده در یک بازی از حلقه های پی در پی و دستور sleep استفاده کردم (اشتباه کردم) ، وقتی قصد داشتم از اکتیویتی خارج بشم ، خارج نمی شد.

اگر قصد حرکت شی ای رو دارید از کتابخونه انیمیشن استفاده کنید.

چون احتمالا با دستور DoEvents هم مشکلتون برطرف نمیشه.

و بقول دوستمون از چند نخی استفاده کنید.

 

نه بازی نیست یه برنامه قرآنه وقتی سوره ها رو باز می کنم باید صبر کنم تا آخرش لود بشه بعد دکمه back کار

کنه بعضی سوره ها هم که بزرگن کاربر نمیتونه صبر کنه تا آخر لود بشن شاید قبل لود کامل بخواد بیرون شه

می دونم بخوام از حلقه do until خارج شم باید از دستور exit do استفاده کنم فقط نمی دونم اون شرط if رو چی

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

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

با همون دستور exit.

معمولا با if یه شرط میزاریم وقتی برقرار بود داخل شرط exit مینویسی ادامه حلقه رو اجرا نمیکنه ولی همچنان معتقدم مشکلت از این کد نیست.

این کد فقط یه وقفه حداکثر 1 ثانیه ای میندازه قبل از اجرای خط بعدی کد.

با سلام خدمت اساتید

من همچین مشکلی با تابع sleep() دارم و نمیدونم باید چیکارش کنم. از روشی که آقای jeqele گفتن هم رفتم، ولی اتفاقی نمیفته.

مشکل من دقیقا این هست که موقعی که میخوام به عنوان اسپلش برنامه، با کدهای زیر یه سری ایمیج ویو که داخل دیزاینر ساخته شده،ویزیبل کنم، در طول این مدت هیچ کار دیگه ای نمیتونم انجام بدم. مثلا یه دکمه گذاشتم اون پایین که هرکی نخواست، اسپلش رو رد کنه و به اکتیویتی بعد بره، ولی تا تمام عکسها ویزیبل نشه هیچ اتفاقی نمیفته و دکمه هم کار نمیکنه

البته یه آهنگ زمینه هم داره.

 

I1.SetVisibleAnimated(4000,True)
	sleep(1000)
	sleep(1000)
	sleep(500)
	sleep(500)

	I2.SetVisibleAnimated(4000,True)
	sleep(1000)
	sleep(1000)
	sleep(500)
	sleep(500)
	
	I3.SetVisibleAnimated(4000,True)
'	I3.SetLayoutAnimated(5000,I3.Left/(4/3),I3.Top/(4/3),1.2*I3.Width,1.2*I3.Height)
'	delay.Enabled=True
	sleep(1000)
	sleep(1000)
	sleep(500)
	sleep(500)
من سورس مجید آرتا رو هم استفاده کردم ولی نتونستم به جایی برسم. اون سورس خیلی کلی هست و فقط هم مخصوص آهنگ هست.

خواستم روی کار خودم پیاده ش کنم نتونستم.

میشه راهنمایی کنید؟

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

بنظر من در حین لود شدن اجزای لایوت، back کار نمیکنه

اگه میتونی لود شدن پنلها رو تیکه تیکه اجرا کنی،

یه متغیر boolean تعریف کن (اول false باشه)

dim back as boolean=false

بعد در قسمت    keypress :

Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode=KeyCodes.KEYCODE_BACK Then
            back=True
            Return True
    End If
    Return False
    
End Sub

لود شدن هر پنل رو در یه تایمر بذار و آخر هر تایمر، به شرطی تایمر بعدی رو enable کن که :

back=False باشه


sub Timer1_Tick
.
.

Timer1.Enabled=False
if back=False Then Timer2.enabled=True
End sub



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

با همون دستور exit.

معمولا با if یه شرط میزاریم وقتی برقرار بود داخل شرط exit مینویسی ادامه حلقه رو اجرا نمیکنه ولی همچنان معتقدم مشکلت از این کد نیست.

این کد فقط یه وقفه حداکثر 1 ثانیه ای میندازه قبل از اجرای خط بعدی کد.

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

@@aazizz,

سلام

دلیل استفاده از دستور sleep در بارگزاری اطلاعات چیه ؟

از دستور DoEvents استفاده کنید تا دکمه Back هم کار کنه.

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

@@nima_j,

 

@@aazizz,

سلام

دلیل استفاده از دستور sleep در بارگزاری اطلاعات چیه ؟

از دستور DoEvents استفاده کنید تا دکمه Back هم کار کنه.

 

با چه کدی؟کجاش؟

اگه با کد بگین ممنون میشم

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

مشکل از این کد نیست.
مشکل از اونجاییه که لود سنگین اطلاعات روی mainThread انجام میشه احتمالا.
باید multy thread  برنامه رو بنویسید.

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

بایگانی شده

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

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

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