PDA

View Full Version : سوال: مشکل در نخ ها (Thread)



masoudmmd
سه شنبه 14 دی 1389, 11:08 صبح
من دارم یه برنامه برای ارسال ایمیل انبوه مینویسم . از اونجا که ارسال هر ایمیل باید پس از ایمیل قبلی باشه مجبورم از حلقه ها استفاده کنم . ولی مشکل اینجاست که حلقه های طولانی موجب قفل شدن فرم میشن .
حالا از نخ استفاده میکنم ولی باز هم فرمم قفل میکنه و خیلی سنگینه در صورتی که توابع من زیاد سنگین نیستن .
تازه میخواستم از 5 تا نخ همزمان استفاده کنم اما برنامه توی یک نخ هم مونده چه برسه 10 تا .

لفطا رانمایی بن مایید . :ناراحت::ناراحت::ناراحت:

ali_13h
سه شنبه 14 دی 1389, 11:43 صبح
اگر زمانبندی زیاد برای شما مهم نیست می توانید از Application.DoEvent در پایان دستوراتتون استفاده کنید که فرم شما هنگ نکند

masoudmmd
سه شنبه 14 دی 1389, 12:27 عصر
زمانبندی زیاد برام مهم نیست ولی چون باید از یک لیست ویو اطلاعات خونده بشه باید یه ترتیبی داشته باشه که دیگر نخ ها هم همون ردیف رو نخونن .

لطفا کسی راهنماییم کنه

mahboube
سه شنبه 14 دی 1389, 12:46 عصر
دوستان من هم مي خوام بدونم چه موقع ترد ها باعث هنگ كردن برنامه ميشه؟

دوست عزيز masoudmmd (http://barnamenevis.org/member.php?13236-masoudmmd) شمام لازم نيست فونتاتون رو بزرگ بنويسيد.باعث بي نظمي ميشه.(اگر ممكنه يه ويرايش كنيد معموليشون كنيد).

Felony
سه شنبه 14 دی 1389, 16:35 عصر
زمانبندی زیاد برام مهم نیست ولی چون باید از یک لیست ویو اطلاعات خونده بشه باید یه ترتیبی داشته باشه که دیگر نخ ها هم همون ردیف رو نخونن .
باید برای ایتم های لیسستون یک Flag تعریف کنید که وقتی خونده شد Thread بعدی گه بهش رسید Flag رو بررسی کنه و اگر خونده شده بود دوباره نخونش ، تردهاتون هم همزمان نباید روی لیست عملیات انجام بدن برای این کار هم میتونید از Mutex استفاده کنید .


دوستان من هم مي خوام بدونم چه موقع ترد ها باعث هنگ كردن برنامه ميشه؟
وقتی درست ازش استفاده نشه !

mahboube
چهارشنبه 15 دی 1389, 13:14 عصر
سلام.من توي يك برنامه از ترد استفاده مي كنم ولي وقتي برنامه رو مي بندم برنامه هنوز توي taskmanager وجود داره.
ترد رو هم موقع بستن فرم abort مي كنم.ولي برنامه همچنان تو taskmanager هست.چرا؟

hossin.esm
چهارشنبه 15 دی 1389, 14:14 عصر
سلام.من توي يك برنامه از ترد استفاده مي كنم ولي وقتي برنامه رو مي بندم برنامه هنوز توي taskmanager وجود داره.
ترد رو هم موقع بستن فرم abort مي كنم.ولي برنامه همچنان تو taskmanager هست.چرا؟


Thread th = new Thread(new ThreadStart(start));
th.IsBackground = true;
th.Start();


کافی است IsBackground نخ رابرابر true کنید.