PDA

View Full Version : دستکاری نحوه کامپایل کامپایلر



vahidiran
شنبه 12 اسفند 1385, 17:23 عصر
دستکاری نحوه کامپایل کامپایلر
در vn.net2005 اگر کد یک روال رو اجرا کنید می بینید که هنگام پایان یافتن اجرای آخرین خط نتیجه اعمال می شود به کد پایان توجه کنید
فرض کنید ما سه تا Text داریم و تابع sleep اجرای برنامه رو نگه می داره اگه کد ما به صورت زیر باشه

Sleep(5000)
Text1.text = "ali"
Sleep(5000)
Text2.text="reza"
Sleep(5000)
Text3.text="hassan"اگه دقت کنیم همه انتظار داریم بعد از 5 ثانیه Text1 با ali پر شه در صورتی که Text2 و Text3 هنوز خالی هستند و بعد از 10 ثانیه Text2 با reza در صورتی که Text3 هنوز خالی و در نهایت بعد از 15 ثانیه Text3 با hasssan پر شه
ولی در واقع این اتفاق نمی افته و نتیجه عملی اینه که بعد از 15 ثانیه 3 تا Text با هم پر می شند ؟
کسی می تونه بگه چه جوری می شه خط به خط کد رو اجرا کرد و نتیجه اونو دید ؟

titbasoft
شنبه 12 اسفند 1385, 18:49 عصر
این مساله ارتباطی به کامپایلر نداره. زمانی که یک Event فراخونی میشه، تا زمان انمام اون Event فرم Paint نمیشه. اگر درمیان این روال نیاز دارید که فرم شما دوباره redraw بشه از متد Refresh از فرم استفاده کنید.

Sleep(1000)
TextBox1.Text = "ali"
Me.Refresh()
Sleep(1000)
TextBox2.Text = "reza"
Me.Refresh()
Sleep(1000)
TextBox3.Text = "hassan"

Bahram0110
یک شنبه 13 اسفند 1385, 10:12 صبح
DoEvents هم می تونی استفاده کنی!

titbasoft
یک شنبه 13 اسفند 1385, 10:29 صبح
DoEvent باعث گذاشته شدن OverHead روی کد میشه و فکر کنم به خاطر Backward Compatibility هنوز نگه داشته شده. حتی بهتر از روشی که در پست قبلی عرض کردم استقاده از متد Refresh هر کنترل خاص است.

vahidiran
یک شنبه 13 اسفند 1385, 11:57 صبح
بسیار تشکر از دستان
می شه توضیح بدهید Backward Compatibility چیه ؟

titbasoft
یک شنبه 13 اسفند 1385, 12:33 عصر
Backward Compatibilityسازگاری با نسخه های قبلی

vahidiran
یک شنبه 13 اسفند 1385, 12:37 عصر
لازم به ذکر است که با متد refresh فرم برای این کد جواب نمی ده ولی با متد application.doevents به رامی یک بره جواب من رو می ده
در ضمن خود مثال شرکت ماکروسافت مثالی زده که از تایع sleep استفاده شده بود یعنی خال سیبل کد من
در ضمن من از vb.net 2005 نسخه Professional استفاده می کنم
در آخر از همه دوستا ن تشکر می کنم