PDA

View Full Version : مشکل در خروج thread



nazanin366
یک شنبه 01 تیر 1393, 13:56 عصر
سلام.من موقع خروج از فرم اول چک میکنم عملیات تموم شده یا نه.عملیات رو هم با ترد انجام میدم.اگه عملیات به اتمام نرسید ترد رو suspend میکنم بعد از کاربر سوال میکنم اگه مایل به ادامه این کار بود ترد رو resume میکنم در غیر این صورت ترد رو abort میکنم.قسمت اولی خوب کار میکنه ولی دومی نه.کجای این کار مشکل داره؟

plus
یک شنبه 01 تیر 1393, 20:37 عصر
abort کردن یک thread کار مناسبی نیست و میتونه مشکلات ایجاد کنه. شما باید کدی که در thread اجرا میشه رو طوری بنویسید که زمانی که لازم بود (حتی وسط کار)، با تغییر یک flag بسته بشه، نه با abort.

nazanin366
یک شنبه 01 تیر 1393, 21:04 عصر
به جز abort چجوری ببندمش؟دارم به یک وب سرویس وصل میشم.

plus
یک شنبه 01 تیر 1393, 21:47 عصر
بستگی به کاری که دقیقا دارین میکنید داره. اگه صرفا دارین یک متد وب سرویس رو اجرا میکنید، میتونید در مورد Cancel یا Abort کردن متد وب سرویس جستجو کنید.
برای مثال : https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=C%23+cancel+web+service+call&spell=1
موضوعی که مطرح و مشخص هست اینه که Abort کردن خود Thread کار مناسبی نیست.

nazanin366
دوشنبه 02 تیر 1393, 00:00 صبح
نمیشه یه جوری سر و تهش رو به هم وصل کرد؟؟؟آخه کارهای دیگه هم هستن

amirzandi
دوشنبه 02 تیر 1393, 12:32 عصر
thread.isBackground=true این کار را برای شما اتوماتیک انجام میده

nazanin366
دوشنبه 02 تیر 1393, 12:42 عصر
thread.isBackground=true این کار را برای شما اتوماتیک انجام میده
این دستور رو کجا بزارم

amirzandi
دوشنبه 02 تیر 1393, 17:43 عصر
این دستور رو کجا بزارم
System.Threading.Thread t = new System.Threading.Thread(loadItems);
t.isBackground=true;
t.Start();

nazanin366
دوشنبه 02 تیر 1393, 18:42 عصر
System.Threading.Thread t = new System.Threading.Thread(loadItems);
t.isBackground=true;
t.Start();

برای متوقف کردنش راه دیگه ای ندارین؟

amirzandi
دوشنبه 02 تیر 1393, 18:44 عصر
وقتی isbackground را استفاده می کنید نیازی به متوقف کردنش نیست. وقتی فرم بسته شده ترد خودش حذف میشه.

nazanin366
دوشنبه 02 تیر 1393, 19:34 عصر
سپاس بسیار فراوان

nazanin366
دوشنبه 02 تیر 1393, 19:35 عصر
یه سوال دیگه.موقغ خروج اول ترد رو suspend میکنم و از کاربر می پرسم می خواد خارج بشه یا نه.اینجا رو چکارش کنم؟

elec60
دوشنبه 02 تیر 1393, 22:19 عصر
یه سوال دیگه.موقغ خروج اول ترد رو suspend میکنم و از کاربر می پرسم می خواد خارج بشه یا نه.اینجا رو چکارش کنم؟

تو متد Closing مربوط به فرم باید e.Handled رو بسته به پاسخ گرفته شده از کاربر(موافق یا مخالف خروج) true یا false کنی.