PDA

View Full Version : بسته نشدن کامل برنامه هنگام استفاده از سوکت



amir001
دوشنبه 23 اسفند 1389, 06:53 صبح
سلام بر دوستان برنامه نویس

من در پروژه هایی که کار میکنم ، اکثرشون وقتی برنامه نویسی سوکت انجام میدم، بعد از اینکه برنامه را میبندم ، به طور کامل بسته نمیشه و تنها فرم و حالت نمایشی اون از بین میره در حالی که در Task Manager قسمت Process باقی میمونه و باید برم اونجا و دستی خاتمه اش بدم.

من برای خارج شدن از برنامه راه های زیادی را تست کردم اما باز هم مشکل پابرجاست.

من تعدادی سوکت ایجاد میکنم که هر کدو یک نخ جدا دارند.

بعد هنگام خروج اول فقط فرم را میبستم. در مرحله بعد اومدم و تمام سوکت ها (TcpClien) ها که در آرایه ذخیره کرده بودم را Close کردم. باز هم فایده نداشت.

یک بار دیگه این دو مدت زیر را هم درون تابع خروجم فراخوانی کردم گفتم شاید درست بشه اما باز هم فایده نداشت.

Application.ExitThread();
Application.Exit();
this.Close();

حالا موندم چیکارش کنم.
راهی هست که بعد از زدن دکمه خروج بزنه همه چیز را نابود کنه و ببنده؟

Hossenbor
دوشنبه 23 اسفند 1389, 08:47 صبح
از متد dispose استفاده کنید

amir001
دوشنبه 23 اسفند 1389, 13:47 عصر
اگر میدونستم جوابش اینقدر کوچیکه کمتر مینوشتم :لبخند:
از Dispose فرم؟؟

بعد این حتما همه چیز را نابود میکنه و برنامه را میبنده؟؟
[خب تست میکنم]

amir001
دوشنبه 23 اسفند 1389, 14:56 عصر
از this.Dispose(); فرم استفاده کردم نشد.

دنبال یک چیزی میگردم که اصلا برنامه را بگیره از پروسه ها بندازه بیرون. یک چیزی مثل killProcess اما برای خود برنامه باشه.

توی MSDN یک تابع پیدا کردم Application.ShutDown() اما این تابع اصلا توی برنامه ام نمیاد. نمیدونم چرا. حتی نتونستم ازش استفاده کنم که تست کرده باشم.

کسی میتونه کمک کنه؟

Hossenbor
دوشنبه 23 اسفند 1389, 15:43 عصر
سلام دوست من اون تابع application.exit‎(‎‎)‎‎;‎ است در ضمن برنامه kill هم میشه کد زیر در ایونت فرم کلوزینگ بزار
system.diagnostics.process.getcurrentprocess().kil l();

amir001
دوشنبه 23 اسفند 1389, 15:54 عصر
منظورم این بود : http://msdn.microsoft.com/en-us/library/ms597013.aspx

دلیلش را هم متوجه شدم که چرا نیستش، من برنامه ام را روی فریم ورک 2 گذاشتم و این متد برای 3 به بعد هست.

آقا بسیار متشکر.
فکر کنم مشکل حل شد. دستور جالبی بود.

amir001
دوشنبه 23 اسفند 1389, 17:31 عصر
آقا این هم جواب نداد.

برنامه ام گاهی در موقعتی قرار میگیره که بعد از بسته شدن از پروسسز ها حذف نمیشه. میشه اینطور نیست، گاهی اینطوری میشه. الان یا این کد هم اتفاقی یک بار توی لیست پروسز ها مونده و از بین نمیره.