PDA

View Full Version : انتظار چند ثانیه ای در وسط برنامه - پورت کام



AGENT-20
پنج شنبه 19 مرداد 1391, 19:12 عصر
سلام
من با زدن یک دکمه می خواهم 2 کار را بصورت زیر انجام دهم

یک شکل مربع در صفحه ظاهر شود و چند ثانیه منتظر باشم ببینم از ورودی با پورت کام چه کدی می آید

دوباره بعد از گذشت چند ثانیه یک کار شبیه کار بالا تکرار شود.


مشکل من این است که بعد از ظاهر کردن شکل اول نمیتوانم بگویم چند ثانیه منتظر بمان.

با Thread کار کردم و اگر Slip کنم کل سیستم از کار می افتد
مرسی

مهرداد صفا
پنج شنبه 19 مرداد 1391, 21:00 عصر
سلام
زمان حال حاضر را گرفته، مقدار چند ثانیه بسته به زمان دلخواه به آن اضافه کنید در متغیری ذخیره کنید. در حلقه مقدار زمان جاری را با متغیر مقایسه کنید تا برابر شوند.
مثلا برای پنج ثانیه:

double t = Microsoft.VisualBasic.DateAndTime.Timer + 5;
while (t > Microsoft.VisualBasic.DateAndTime.Timer)
{
Application.DoEvents();
}
دقت کنید فایل Microsoft.visualbasic.dll را به پروژه اضافه کرده باشید.
البته در این روش برنامه متوقف نمیشود و اگر این کد در رویدادی باشد و آن رویداد دوباره اتفاق بیفتد کد دو بار اجرا میشود و ممعمولا در صورت امکان استفاده از چند thread مناسبتر است.

AGENT-20
جمعه 20 مرداد 1391, 14:09 عصر
آقا صفا بازدن یک Button میخواهم یک تابع اجرا شود و کاری بکند سپس چند ثانیه صبر کند و ادامه کد های داخل Button اجرا شود.

Sleep کل برنامه منو فریز میکنه

saman_h
جمعه 20 مرداد 1391, 14:22 عصر
سلام
شما میتونی خود تابعی که داریو داخل Thread اجرا کنی و دستور Thread.Sleep(زمانی که میخوای) رو داخل خود تابعی که داری قرار بده ( آخرین دستورش باشه )
اینطوری کارت راه میفته احتمالا

barnamenevisforme
جمعه 20 مرداد 1391, 14:34 عصر
سلام
تا جایی که میتونید از ایجاد مکث در برنامه خودداری کنید.
اطلاعات com port رو بدون وقفه بخونید در یک string اونو append کنید.
یه متغیر دیگه از نوع string تعریف کنید.هر وقت فرمت دریافتی از comport با فرمت مد نظر شما برابری داشت،مقدار قابل قبول رو در اون متغیر ذخیره کنید.
حالا هر وقت نیاز داشتید میتونید از مقدار ذخیره شده در متغیر که حاوی آخرین اطلاعات قابل قبوله استفاده کنید.

مهرداد صفا
جمعه 20 مرداد 1391, 15:26 عصر
آقا صفا بازدن یک Button میخواهم یک تابع اجرا شود و کاری بکند سپس چند ثانیه صبر کند و ادامه کد های داخل Button اجرا شود.

Sleep کل برنامه منو فریز میکنه
کد را امتحان کردید؟ همین کار را انجام میدهد.

//my first code
MessageBox.Show("code1");

double t = Microsoft.VisualBasic.DateAndTime.Timer + 5;
while (t > Microsoft.VisualBasic.DateAndTime.Timer)
{
Application.DoEvents();
}
//after 5 seconds
MessageBox.Show("code2");

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

AGENT-20
جمعه 20 مرداد 1391, 16:06 عصر
دوستان دستتون درد نکنه

یه جوریایی کارمو راه انداختی

بازم به مشکل برخورد کردم میام
P:

nima000
شنبه 08 تیر 1392, 20:48 عصر
سلام دوستان چگونه باید Microsoft.visualbasic.dll را اضفه کنم

double t = Microsoft.VisualBasic.DateAndTime.Timer + 5;
while (t > Microsoft.VisualBasic.DateAndTime.Timer)
{ ها رو اضفه کردم اخطار میدیه
ممنون

samad1987
یک شنبه 09 تیر 1392, 00:05 صبح
System.Threading.Thread.Sleep(5000)


5000 بر حسب میلی ثانیه هستش که میشه 5 ثانیه

nima000
یک شنبه 09 تیر 1392, 16:29 عصر
System.Threading.Thread.Sleep(5000)


5000 بر حسب میلی ثانیه هستش که میشه 5 ثانیه


سلام ممنون ز شما ولی من میخوام مثلا دستور 1 رو که اجرا کرد برنامه به کار خودش ادامه بده و بعد از 10 ثانیه مثلا دستور 2 را اجرا کند اما این کد کل برنامه را متوقف میکند
ممنون میشم راهنمایی کنید