بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشخص شدن اتمام کار یک ترد (Thread)

مدیریت گفتگو
Criss 12 سال پیش
آخرین تغییر: 11 سال پیش

چطور میتونیم مشخص کنیم تا زمانی که کار یک ترد تموم نشده با هر بار کلیک شدن روی باتن یک ترد جدید ساخته نشه ؟

در واقع چطور میتونیم مشخص کنیم که ترد کار خودش رو تموم نکرده یا تموم کرده ؟

نظرات

دو کار حتما باید انجام بشه - هم پشت صحنه برای کد نویسی و هم در اصل، کاربر رو باید متوجه کنی که انجام کارشو شروع کردی و تا دوباره درخواست نده - لینک

پاسخ‌ها 2

sadeghbarout 12 سال پیش

خیلی راحت میتونی آخرین خط کار thread ت مقدار یه متغییر boolean رو true کنی و توی بخشی که میخوای تموم شدن ترد رو بررسی کنی، مقدار اون متغییر boolean رو ارزیابی کنی.

نظرات

M.heydari 12 سال پیش
یا اگه چندتاس بریزینشون توی لیست و چک کنید.
مجتبی یگانه 12 سال پیش

دوستان یه سوال هم من بپرسم !

مثلا داریم

thead - >

while(runThread){
while(buffer.read(...)){
// Do Job
}
}

خوب اینجا وقتی ما runThread رو False کنیم ، بازم کار انجام میشه تا از حلقه دوم بیاد بیرون و یک بار دیگه شرط برسی بشه ، من برای دانلود connecton رو disconnect می کنم و یک exception هندل شده ایجاد میشه و کار ترد تموم میشه ، اما برای سایر کار ها چی ؟ ، یعنی کلا هیچ کار دیگه ای انجام نشه و به محض دستور توقف ، کار متوقف بشه ، حتی اگه هزار تا حلقه در حال فعالیت باشه !

نظرات

Criss 12 سال پیش
من از prgBars.get(2).getProgress() == 100 استفاده کردم اینجوری مشخص میشه که ترد کارش تموم نشده اما جالب نیست ! مشکل من این بود که 2 ترد فعال میشد و پروگرس بار توسط 2 ترد مقداردهی میشد !
Hossein Rezaei 12 سال پیش
حالا دقیقا منظورو متوجه نشدم اما بهتر نیست بجای while بیرونی، یک if داخل while داخلی بذاریم که با هر بار اجرای حلقه چک کنیم که اگر runThread برابر false بود، break کنه؟
مجتبی یگانه 12 سال پیش
@کریس ، ما با کاربر مشکلی نداریم ! ، مشکل ما جلوگیری از پردازش اضافه هست
مجتبی یگانه 12 سال پیش
@ حسین ، راه خوبیه و جواب میده ، اما باید یه سری روال اصولی تر باشه که کلا اون Thread رو kill کنه ، باید بیشتر بگردیم :|
Criss 11 سال پیش
مجتبی جان برای kill کردن ترد قبلی راهی پیدا کردی ؟
hamed 11 سال پیش
چرا همون runThread را در جاهایی از برنامه که مطمئن بودید توقف ترد منجر به اختلال نمی شه سهیم نمی کنید؟ یعنی مشابه همون while یا با if، چند جای دیگه از کد ترد هم که پروسس سنگینی دارند ادامه عملیات را متوقف کنید. لااقل برای انجام هر پروسس سنگین شرط چک بشه!

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .