PDA

View Full Version : چگونه تا وقتی که متدی که مربوط به یک Event هست کامل اجرا نشده, برنامه در همون خط بمونه؟



Mohammad_1984
یک شنبه 10 مرداد 1389, 08:46 صبح
سلام

من یه برنامه با کنسول دارم مینویسم که از طریق سریال پورت با gsm در ارتباط هست

کلاس سریال پورت یک Event دارد به نام DataReceived

وقتی در برنامه یک At Command ران میکنم, متدی که برای DataReceived هست ران میشه

من میخوام تا وقتی که دستورات داخل این متد به پایان نرسیده است, At Command بعدی

اجرا نشه (در واقع خط بعدی کدی که نوشتم اجرا نشه تا وقتی دستورات داخل متد

DataReceived به پایان برسد).

مرسی

A.S.Roma
یک شنبه 10 مرداد 1389, 09:00 صبح
منم چنین سوالی داشتم.
منم با پورت سریال باید کار کنم . بدین شکل که فرستنده یکسیر دیتا برای فرستادن داره و شروع می کنه به فرستادن.
مشکل اینجاست که هر دیتایی که فرستاد باید منتظر پاسخ از گیرنده باشد و بسته به پاسخ گیرنده تصمیم گیری بر ارسال دیتای بعدی یا ... می کند .
چگونه باید منتظر پاسخ از گیرنده ماند !؟
از Thread ها استفاده کردم اما درست جواب نداد.

Mohammad_1984
یک شنبه 10 مرداد 1389, 09:06 صبح
منم چنین سوالی داشتم.
منم با پورت سریال باید کار کنم . بدین شکل که فرستنده یکسیر دیتا برای فرستادن داره و شروع می کنه به فرستادن.
مشکل اینجاست که هر دیتایی که فرستاد باید منتظر پاسخ از گیرنده باشد و بسته به پاسخ گیرنده تصمیم گیری بر ارسال دیتای بعدی یا ... می کند .
چگونه باید منتظر پاسخ از گیرنده ماند !؟
از Thread ها استفاده کردم اما درست جواب نداد.


من با متد ()ReadLine دیتا را میخونم, وقتی شما این متد را ران میکنید برنامه در همین سطر میمونه تا وقتی که دیتایی از پورت دریافت کند.

A.S.Roma
یک شنبه 10 مرداد 1389, 09:42 صبح
ممنون مشکلم حل شد . خودم هم از همین متد استفاده کردم اما مشکل این بود که گیرنده در یک خط ابتدا پیغام خودم رو بهم بر می گردند و readline دستای اشتباه بهم میداد

Mohammad_1984
یک شنبه 10 مرداد 1389, 09:49 صبح
شاید سوالم رو درست متوجه نشدید

ببینید فرض کنید شما یک تکست باکس در فرم دارید و در Event TextChange یکسری عملیات انجام میدهید.

یک باتون هم در فرم دارید وقتی روش کلیک میشه شما در یک متد دو بار تکست TextBox را مساوی دو مقدار متفاوت قرار میدهید.

وقتی در خط اول تکست TextBox را تغییر میدهید برنامه هدایت میشه به Event TextChange و یک متدی ران میشه. من میخوام دستورات داخل این متد تا وقتی تمام نشده برنامه در متد کلیک باتون در همون خط باقی بمونه.

خودمو کشتم تا منظورم را برسونم