سلام.
لطفا پست تکراری و بی محتوا نفرستید.
این روش کار بار تردها.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام.
لطفا پست تکراری و بی محتوا نفرستید.
این روش کار بار تردها.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شرمنده دوتا پست تولید شد، نشد یکیشو پاک کنم!
در مورد کدهاتون هم اگه بیشتر میشد بیشتر توضیح میدادین ممنون میشدم!
مثلا میفرمودید که چگونه دو عدد Thread ایجاد شده (مثلا دستورات Login برنامه را با دستورات جلو بردن ProcessBar) هماهنگ کنم (بطوری که وقتی اعتبار سنجی نام کاربری و رمز عبور تمام می شود، شی ProcessBar نیز به انتها برسد)
سلام خدمت دوستان عزیز
دوست من شما ظاهرا در کل در این مورد چیزی نمیدونی پس بهتره که یه کمی در مورد thread یا همون چندریسمانی توی اینترنت تحقیق کنی و نتایج زیادی به دست میاری .
ولی در کل بهتون بگم که در حالت عادی برنامه شما تقریبا به صورت خطی پیش میره و تا زمانی که یک دستور به پایان نرسه دستور بعدی اجرا نمیشه.
ولی در حالت استفاده از چند ریسمان در برنامه شما میتونید به طور همزمان چند دستور رو به موازات هم اجرا کنید و با دستوراتی که مینویسید میتونید در هر لحظه که دوست دارید هرکدوم از ریسمان هارو که میخواید متوقف کنید و یا به شکل کامل از کار بیاندازید و حتی تقدم و تاخر ریسمان ها رو تعیین کنید و .....
و چون بحث یه کم طولانیه (ولی خیلی سادس) بهتره که خودت در موردش یه کم تحقیق کنی بعد راحت تر میشه بهتون کمک کرد تا مشکلاتتون رو رفع کنید.
خوب بابا لابد بنده خدا نمیدونه ترد چیه!زور که نیست!
اگه حالشو داری ترد یاد بگیری که هیچ،ولی اگه حسش نیست خیلی راحت میتونی به برنامت بگی خودشو باز-تازه سازی! کنه.این دستورو آخر حلقه یا بین خط های کد بنویس:
اینجوری هر چند وقت یه بار خود فرم خودشو باز-تازه سازی(چیه مگه؟خوب کلمه اختراع کردم!همون Refresh خودمونه!) میکنه.هم Event ها رو میگیری هم ProgressBar هات کار میافتن.اگه مشکلی داشتی پ.خ. بده کامل توضیح بدم واست.Windows.Forms.Application.DoEvents()
سلام خدمت دوستان عزیز
ارشیا جان نظر شما هم جالب و سریع و تقریبا کارآمده.
البته من تا حالا از این روش استفاده نکرده بودم.
میخواستم بدونم این دستور همون کار دستور
Me.Refresh()
رو انجام میده یا چیز متفاوتی هستش؟
Last edited by am_merman01; 04-03-2009 at 01:10.
سلام.
نه me.refresh نیست. کلی تره. کلا یه فرصت به انجام کارهای عقب افتاده میده. مثلا اگه داخل یه حلقه طولانی باشیم یه فرصت کوتاه میده تایمر ها هم اجرا بشن.
لطفا یکی هم ما رو تحویل بگیره!!!!!!!!!!!!!!!
من یک فرم درست کردم و یک ProcessBar توش گذاشتم زمانی که کاربر روی دکمه login کلیک می کند، بطور دستی تعداد کل دستوراتی که برای دکمه Login نوشته ام را شمرده ام (در هنگام Design) و MaxValue شی ProcessBar را در اولین خط رویداد کلیک برابر با آن قرار دادم و پس از اجرای هر خط دستور یک واحد مقدار Value شی ProcessBar را زیاد کرده ام، و با این کار نتیجه ای که من میخواهم حاصل میشود اما راه اصولی و قابل قبولی نیست!!!
میخواستم ببینم چگونه می توان این کار را بطور اصولی پیش برد؟؟؟؟
سلام.
این کار اصلا منطقی نیست. شاید یه خط 10 ثانیه طول بکشه یه خط 1 میکروثانیه. پروگرس شما کند و تند و غیر یکنواخت پر میشه. ضمن این که کار برنامه نویسی شما 2 برابر شده. فرض کنید 50 خط کد بود چه دردسری داشت. حجم برنامه هم بی دلیل افزایش پیدا میکنه.
مگه لاگین کردن یوزر چه قدر زمان میبره که پروگرس گذاشتی؟ بیشتر از 10 ثانیه طول میکشه؟ یه پیغام چند لحظه صبر کنید... نمایش بده.
دوست عزیز من لاگین را مثال زدم که دقیقا قابل لمس باشد!!!
بعد هم گفتم که این کار درستی نیست و از شما خواستم بفرمایید که راه حل اصولی آن چیست؟
Refresh فقط فرم رو از نو زنده میکنه و به هیچ کدوم از Event ها اجازه ی اجرا شدن نمیده(اینو تست کردم).با یک کد طولانی هم اگه رو فرم کلیک کنی(مثلا) کلا از کار میافته(اینم تست کردم!اصلا از همینجا بود که DoEvents رو کشف کردم!)
در حالی که DoEvents به کل برنامه اجازه میده هر کار میخواد بکنه.یعنی اگه یک Module داشته باشی و توش یه فرم تعریف کنی بعد یه DO Loop بذاری و خط آخرش بنویسی Application.DoEvents اونوقت عین اینه که یه Windows Forms Application داری!
فقط به خاطر تو امضامم عوض کردم.ببین خط آخرش یاد چیزی نمیندازدت؟!
اگه یه کد خیلی طولانی داشته باشی معمولا حلقست.اگه اینطور نیست سعی کن مقداری که هر دستور طول میکشه رو تخمین بزنی بر اون اساس چند خط یه بار آپدیت کنیش.چون راه خاصی نداره کاری که میخوای بکنی(یا حداقل من بلد نیستم).این کار شبیه Loading بازی ها میشه که چند وقت یه بار میپرن.اونم همچین حالتیه.دوست عزیز من لاگین را مثال زدم که دقیقا قابل لمس باشد!!!
بعد هم گفتم که این کار درستی نیست و از شما خواستم بفرمایید که راه حل اصولی آن چیست؟
ضمنا حواست باشه که Refresh کردن فرم کار زمان گیریه و میتونه زمان اجرای کدتو خیلی بالا ببره.درست ازش استفاده کن.
Last edited by Arshia001; 03-03-2009 at 15:35.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)