تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: بسته شدن سریع برنامه و عدم اجرای کامل آن در ریسمان های BackGround

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض بسته شدن سریع برنامه و عدم اجرای کامل آن در ریسمان های BackGround

    سلام
    تفاوت این دو ریسمان در چیست؟ bakcground و foreground?
    چرا برنامه سریعا در background بسته میشه و فقط 1 اجرا میشود؟


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  2. #2
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    بحث راجب برنامه ی شما در ادامه.اما:زمانی که یک Thread دارای خاصیت Background شود بدین معناست که اگر Thread مربوط به پروسس اصلی بسته شود این Thread دوم که Background دارد مانع آن نمی شود. یعنی اولویت اتمام ندارد. فرض کنید در یک Thread قرار است یک محاسبه انجام شود و حاصل آن توسط Thread اصلی استفاده شود. خوب اگر Thread اصلی توسط کاربر بسته شود آنگاه نیاز هست تا پروسس منتظر اتمام محسابات Thread دیگر باشد؟ مطمئنا خیر. پس Thread مربوط به محاسبات می تواند از نوع Backgound باشد. اینگونه بهینه تر است.در مورد برنامه ی شما هم دقیقا قضیه همین است.شما برنامه را اجرا کنید و هیچ کلیدی نزنید. برنامه کاملا کار می کند. اما با زدن کلید پروسس Thread شما را بلا استفاده دیده و بلافاصله برنامه را می بندند.موفق باشید.

  3. 3 کاربر از Msba بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    بحث راجب برنامه ی شما در ادامه.اما:زمانی که یک Thread دارای خاصیت Background شود بدین معناست که اگر Thread مربوط به پروسس اصلی بسته شود این Thread دوم که Background دارد مانع آن نمی شود. یعنی اولویت اتمام ندارد. فرض کنید در یک Thread قرار است یک محاسبه انجام شود و حاصل آن توسط Thread اصلی استفاده شود. خوب اگر Thread اصلی توسط کاربر بسته شود آنگاه نیاز هست تا پروسس منتظر اتمام محسابات Thread دیگر باشد؟ مطمئنا خیر. پس Thread مربوط به محاسبات می تواند از نوع Backgound باشد. اینگونه بهینه تر است.در مورد برنامه ی شما هم دقیقا قضیه همین است.شما برنامه را اجرا کنید و هیچ کلیدی نزنید. برنامه کاملا کار می کند. اما با زدن کلید پروسس Thread شما را بلا استفاده دیده و بلافاصله برنامه را می بندند.موفق باشید.
    سلام
    اول سپاس از پاسخ شما و این تقدیم به شما
    منظور شما این هست؟
    console.readkey(); ??? این رو خودم اضافه کردم و بعد فهمیدم نیاز نیست و // کردمش. بدون کلید زدن.و هیچ کاری اگر ترد را بک گراند بزاریم 1 رو چاپ میکنه و سریع می بنده برنامه رو.

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    جواب دوستمان Msba کاملاً صحیح است ولی بظاهر برخی دوستان کمی به توضیحات بیشتر نیاز دارند ...

    اگر ریسمان شما Background باشد، به این معنی است که با اتمام Process (یا برنامه) خواسته اید آن ریسمان در هر مرحله ای از کارش که باشد Abort و متوقف شود.
    در مقابل اگر ریسمان Foreground باشد، یعنی خواسته اید برنامه قبل از اتمام و جمع آوری کلی حافظه، منتظر بماند تا کار ریسمان مورد نظر تمام شود.

    درواقع اینجا، ریسمانی که Process توسط سیستم عامل با آن آغاز شده و همان که main را اجرا میکند مهم است، سیستم عامل Process و منابع و حافظه را در ارتباط با این ریسمان زنده نگاه میدارد.
    میتوان گفت، این ریسمان اگر به انتهای main برسد منتظر اتمام ریسمان های Foreground میماند ولی در آخر همه ریسمان های Background را هم با خودش نابود میکند.


    خلاصه:
    ریسمان شما Background باشد با رسیدن ریسمان اصلی که main را اجرا میکند به انتهای main همه چیز تمام میشود.
    Last edited by _H2_; 10-08-2013 at 23:53.

  6. 3 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •