PDA

View Full Version : چگونگی فراخوانی متد COMPLETE در کامپوننت BackGroundWorker



h_Dalily
پنج شنبه 13 خرداد 1395, 12:57 عصر
سلام دوستان.
قبل هر چیزی اینو بگم که توی انجمن زیاد گشتم به همچنین تاپیکی بر نخوردم تا اونجا بیانش کنم.برای همین اینجا پرسیدم.امیدوارم بدرد بقیه دوستان هم بخوره

راستش من روی یه بازوی ربات کار میکنم که یه برنامه با سی شارپ براش نوشتم
توی برنامم من از کامپوننت backgroundworker استفاده کردم چون در پشت زمینه thread اصلی باید دایما موقعیت و دما وگشتاور ... موتورها رو بخونم
داخل متد Dowork هم کد هام رو نوشتم که از پورت سریال میخونه
داخل متد Complete هم نوشتم اگر کامپوننتم کنسل شد کلا dispose بشه کامپوننت و یه if دیگه گذاشتم که اگر کنسل نشد دوباره همین کامپوننت run بشه
تا الان هیچ مشکلی نداشتم
مشکل زمانیه که من باید ارسال موقعیت کنم توسط یک button
پس باید عملیات اون backgroundworker رو متوقف کنم و بعد ارسال داده کنم و بعد دوباره run کنم
برای همینم من اول توی رویداد باتنم نوشتم backgroundworker.cancelAsync()(میدونیم که این متد باعث میشه فلگ e.cancel توی متد complete مقدارش true بشه)
بعد هم یک if گذاشتم که کامپوننتم busy هست یا نه(که متاسفانه هس) و موقعیت ارسال نمیشه.
جالبشت اینجاست که از رویداد کلیک باتن که میاد بیرون میره متد complete رو چک میکنه و میفهمه که cancel شده.
حالا من میخوام داخل رویداد کلیک باتن بره رویداد complete رو چک کنه.بعد ادامه دستورات رو اجرا کنه.چی کار باید بکنم؟؟؟؟:متفکر::متفکر::متفک :

h_Dalily
پنج شنبه 13 خرداد 1395, 20:39 عصر
دوستان کسی اطلاعی در این مورد نداره ایا؟