نمایش نتایج 1 تا 6 از 6

نام تاپیک: خروج از ترد ( اجرای یک بار ترد)

  1. #1
    کاربر دائمی آواتار MehdiElexal
    تاریخ عضویت
    آذر 1388
    محل زندگی
    پشت میز
    پست
    519

    Post خروج از ترد ( اجرای یک بار ترد)

    با سلام خدمت همه دوستان من یک ترد ایجاد میکنم بدین صورت
                ThreadStart entryPoint = new ThreadStart(SendPDU(PhoneNumberPDU, MessageTextPDU, WaitTimePDU));
    Thread depthChangeThread = new Thread(entryPoint);
    depthChangeThread.Start();

    و یک تابع
    SendPDU

    چون داخل sendpdu
    thread.sleep
    وجود داره ئ برنامم متوقف میشه داخل ترد گذاشتم
    ولی میخوام یک بار اجرا شه و بعدش ترد متوقف شه و بسته شه تا با اجرای هر بار ترد های جدید ایجاد نشن و کند نشه مراحل اجرا
    سوال: چطور پس از پایان فرامین در تابع sendpdu ترد باز شده رو متوقف کنم و ببندمش
    با تشکر :)

  2. #2
    کاربر دائمی آواتار abbas.oveissi
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    578

    نقل قول: خروج از ترد ( اجرای یک بار ترد)

    نقل قول نوشته شده توسط MehdiElexal مشاهده تاپیک
    با سلام خدمت همه دوستان من یک ترد ایجاد میکنم بدین صورت
                ThreadStart entryPoint = new ThreadStart(SendPDU(PhoneNumberPDU, MessageTextPDU, WaitTimePDU));
    Thread depthChangeThread = new Thread(entryPoint);
    depthChangeThread.Start();

    و یک تابع
    SendPDU

    چون داخل sendpdu
    thread.sleep
    وجود داره ئ برنامم متوقف میشه داخل ترد گذاشتم
    ولی میخوام یک بار اجرا شه و بعدش ترد متوقف شه و بسته شه تا با اجرای هر بار ترد های جدید ایجاد نشن و کند نشه مراحل اجرا
    سوال: چطور پس از پایان فرامین در تابع sendpdu ترد باز شده رو متوقف کنم و ببندمش
    با تشکر :)
    بهترین راهش فکرکنم این باشه که تابع Interrupt استفاده کنید.میتونید با Try-Catch هندل کنید که بعد از اتفاق افتادن Interrupt چه اتفاقی بیافته(اگر کد خاصی ننویسید ترد بعد Interrupt تموم میشه).مثلا فکر کنید این تابع ای هست که ترد اجرا میکنه :
            public static void runTask()
    {
    try
    {
    Thread.Sleep(10000);
    }
    catch (ThreadInterruptedException exception)
    {
    Console.WriteLine(exception.ToString());
    }
    }

  3. #3
    کاربر دائمی آواتار omid nasri
    تاریخ عضویت
    آذر 1392
    محل زندگی
    تهران - کارگر شمالی
    پست
    385

    نقل قول: خروج از ترد ( اجرای یک بار ترد)

    وقتی این کد خونده بشه ترد متوقف میشه:

    System.Threading.
    Thread.CurrentThread.Abort();

  4. #4
    کاربر دائمی آواتار MehdiElexal
    تاریخ عضویت
    آذر 1388
    محل زندگی
    پشت میز
    پست
    519

    نقل قول: خروج از ترد ( اجرای یک بار ترد)

    نظرتون راجع به Abort چیه ؟ راه درستی نیست ؟ چرا ؟

  5. #5
    کاربر دائمی آواتار abbas.oveissi
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    578

    نقل قول: خروج از ترد ( اجرای یک بار ترد)

    نقل قول نوشته شده توسط MehdiElexal مشاهده تاپیک
    نظرتون راجع به Abort چیه ؟ راه درستی نیست ؟ چرا ؟
    Abort یهو خیلی بی احتیاط ترد رو میبنده،اصلا مهم نیست ترد در چه وضعیتی هست!اما Interrupt فقط زمان هایی که ترد بلاک یا منتظر چیزی هست باعث توقف ترد میشه.مثلا باید توی Abort حواست به file ها باشند که Open نمونند یا چیزهایی به این صورت.
    البته جفتشون رو میشه با try-catch کنترل کرد تا قبل از بسته شدن ترد اقدامات لازم انجام بشه.
    در کل یه جورایی خیلی فرق ندارند ،اصولی ترین کار اینه در داخل ترد flag هایی وجود داشته باشد که همیشه چک بشند،اگر فلگ ها عوض شدند،متناسب با اون کاری که لازم هست انجام دهید تا مجبور نباشید با Abort و Interrupt ترد رو ببندید.

    آپدیت 1 : زمانی که ترد در حال اجرای کد های Unmanaged باشه ،دستور Abort کار نمیکنه تا به کد های Managed برسه.مشکل اینجاست خود فریم ورک دات نت بعضی وقت ها کدهای Unmanaged رو فراخوانی میکنه بطور مثال در دیتابیس و شبکه.برای همین احتمال داره توی این موارد شما Abort کنید اما مدتی طول بکشه تا این اتفاق بیافته که باعث میشه قابل پیش بینی نباشد.

  6. #6
    کاربر دائمی آواتار MehdiElexal
    تاریخ عضویت
    آذر 1388
    محل زندگی
    پشت میز
    پست
    519

    نقل قول: خروج از ترد ( اجرای یک بار ترد)

    بسیار کامل و عالی ممنون

تاپیک های مشابه

  1. اجرای مجدد یک ترد
    نوشته شده توسط JBlack در بخش C#‎‎
    پاسخ: 2
    آخرین پست: پنج شنبه 14 اردیبهشت 1391, 15:22 عصر
  2. مبتدی: اجرای موازی دو ترد
    نوشته شده توسط fsima در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: شنبه 26 فروردین 1391, 15:45 عصر
  3. سوال: جلوگیری از اجرای دو بار برنامه
    نوشته شده توسط sysman_20 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 06 خرداد 1388, 23:45 عصر
  4. تشخیص اجرای نخستین بار برنامه در هر روز
    نوشته شده توسط mehr83 در بخش VB.NET
    پاسخ: 4
    آخرین پست: پنج شنبه 11 مهر 1387, 14:06 عصر
  5. اجرای کند بار اول sql
    نوشته شده توسط Mrs.Net در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: یک شنبه 14 مرداد 1386, 12:28 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •