ورود

نسخه کامل مشاهده نسخه کامل : معادل delay براي سي شارپ (تاخير در اجراي برنامه)



Honradez
11-07-2011, 12:16
سلام.

در سي پلاس پلاس تابعي بود به اسم delay که ادامه اجراي برنامه رو به تاخير مينداخت.

ميخواستم بپرسم که آيا توي ويژوال سي شارپ هم ميشه چنين کاري کرد؟

متشکرم.

MicrosoftH
11-07-2011, 19:54
راستش به نکته ی جالبی اشاره کردید من که نمیدونم ولی میشه با استفاده از Timer اون رو شبیه سازی کرد فکر نکنم کار مشکلی باشه

Open-Source
11-07-2011, 20:20
توی System.Threading یا System.Threadin.Thread یه تابع به اسم Sleep هستش که این کارو انجام میده .:25:

MicrosoftH
11-07-2011, 21:04
جالبه واقعا من که نمیدونستم اگر با Timer شبیه سازی میکردید چقد بی مزه بود چون الان که نوشتم حالم گرفته شد

Honradez
11-07-2011, 21:07
راستش من اينو امتحان کردم. يعني نوشتم Thread.Sleep(200).

منتها اتفاقي که افتاد اين بود که اول 200 ميلي ثانيه صبر کرد و سپس برنامه رو اجرا کرد!

من راستش ميخوام از اين طريق، يک Picture Box رو حرکت بدم تو صفحه.

Open-Source
11-07-2011, 22:03
خوب برای این کار یه Thread جدا باز کن و توی اون Thread این کارو انجام بده (شما این کار رو توی Thread اصلی انجام میدید که این مشکل رو دارید).

در مورد Multi Thread سرچ کن (امشب حال توضیح بیشتر ندارم:34:).

Honradez
12-07-2011, 01:02
من کد زير رو نوشتم: (درواقع ميخواستم جهت امتحان، برنامه‌اي بنويسم که عدد label1 رو هي اضافه کنه.)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

منتها پيغام داد که

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MaSoUd555
12-07-2011, 03:04
جواب مشکلتون



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

pezhmax
15-07-2011, 20:25
کار با backgroundworker رو یاد بگیر. برای اینجور کارهای دم دستی خیلی خوبه. کار باهاش هم خیلی راحته. تو خود MSDN هم راجع بهش مطالب نسبتا کاملی هست.

ok.baby
20-02-2013, 03:03
عزیزان برای رفع مشکلی که اول به اندازه ای که تو thread دادیم صبر میکنه و بعد برنامه رو اجرا میکنه، چیکار باید انجام داد؟

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

Msba
20-02-2013, 17:08
این طور که من متوجه شدم، کافیست تا تاخیر را بعد از کد های خود قرار دهید.
در صورتی که منظور شما چیز دیگری است آنرا شرح دهید.

موفق باشید.

Payman_62
23-02-2013, 21:03
سلام.
اگه شما میخوای ابتدا یه تصویری به عنوان لودینگ اولیه نمایش داده بشه و بعد برنامه اجرا بشه از ترد استفاده نکن.
در همون ترد اصلی عکست رو نمایش بده و بعد از اتمام نمایش عکس فرم اصلی برنامه رو صدا بزن که کار به ترتیب انجام بشه.

ترد برای انجام کارهای موازی هست.

ok.baby
02-03-2013, 19:59
این طور که من متوجه شدم، کافیست تا تاخیر را بعد از کد های خود قرار دهید.
در صورتی که منظور شما چیز دیگری است آنرا شرح دهید.

موفق باشید.


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

Msba
02-03-2013, 20:54
کمی توضیح دهید که کد خود را چگونه نوشته اید؟ دقیقا در کجا Sleep می زنید؟ (بهتر است تا بخشی از کد خود را قرار دهید.)
حدس می زنم شما در Thread اصلی این کار را می کنید و نکته این است که این متد اثر خود را در یک Thread دیگر بسیار خوب نشان می دهد
مخصوصا اگر اینکه شما با یک کنترل رو فرمی کار کنید و در این حالت اصلا Sleep را نمی بینید و نیاز است تا تاخیر در یک Thread دیگر اجرا شود و آن Thread کنترل شما را تغییر دهد.
این مطلب ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) و این پست ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) برای شما مفید است.



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

ترد برای انجام کارهای موازی هست.

من فرمایش شما را قبول دارم اما در یک حالت خاص نظر دیگری دارم که گفتم بگم تا خوانندگان بیشتر بهره ببرند:
در راستای سخنان آقا پیمان، اگر Load زمان بر بود پس نمایش عکس با آن فقط جنبه نمایشی دارد و از Loading پشت قضیه خبری نیست.:n13:
Thread برای انجام کارهای موازی است پس Loading،ProgressBar به طور همزمان نیازمند آن است.

موفق باشید.