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

نام تاپیک: اشکال در استفاده از Thread ها

  1. #1
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    اشکال در استفاده از Thread ها

    سلام دوستان
    من در مورد thread ها توی سایت جستجو کردم و دوستان هم اکثرا توضیحات جالبی داده بودند و مثالهای گوناگونی زده بودند ولی فقط یک اشکال کوچیک وجود داره که تو هیچ کدوم از اینها کد رو شرح نداده بودند. من تا حالا با نخ ها کار نکردم و طریقه استفاده کردن از اون رو هم بلد نیستم و هر چی هم به کد بچه ها نگاه کردم چیزی سر در نیاوردم.
    مثلا بچه ها گفته بودند که برای بخشی که می خواین روش tread انجام بدین داخل یک پروسیجر بدون ورودی قرار بدین. حالا این تکه کد من که می خوام توش از tread استفاده کنم یک برنامه طولانیه و نیاز هست که همش رو داخل treadبندازم.
    بعد از اون نحوه استارت و فراخوانی شو کجا قرار می دیم؟ داخل همون کد ها یا خارج از اون؟
    من اینها رو متوجه نشدم.
    علاوه بر اون چیز هایی در مورد tread و BackgroundWorker و delegate چیزهایی گفته شده بود که تقریبا شبیه هم بودند. اگه میشه فرق اینها رو هم با هم بگین.


    راستشو بخواین من توی یک پروژه ای یک حلقه for دارم و این حلقه کارش طولانیه و حدود 2-3 ساعت می خواد کار انجام بده. خوب در حالت عادی برنامه هنگ می کنه تا کارش تموم بشه و هر مرحله از for حدود 5-6 ثانیه زمان می بره. من می خوام از tread ها برای کنترل این برنامه استفاده کنم یعنی برنامه هنگ نکنه و طول اجرای برنامه یک پروگرس بار نشون داده بشه و اگه کاربر خواست اونو pause کنه و بعدا ادامه بده و اگر هم خواست کل پردازش رو از کار بندازه
    اگه میشه راهنمایی کنید

  2. #2

    نقل قول: اشکال در استفاده از Thread ها

    به احتمال زیاد این مقاله میتونه کارتو راه بندازه!
    توش تقریبا تمام جزئیات چند نخی کردن برنامه توضیح داده شده.
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    نقل قول: اشکال در استفاده از Thread ها

    ممنون از پاسخ مفیدتون.
    دانلود کردم برم بخونم اگه حل نشد باز مزاحمتون می شم

  4. #4
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    نقل قول: اشکال در استفاده از Thread ها

    من توی پروژم گزارشات کارهایی که انجام می دم رو داخل یک لیست باکس نشون می دم. اما وقتی که از نخ استفاده کردم هنگام اجرای تکه کد پیغام می ده که به شیء لیست باکس دسترسی نداره.
    این مشکل رو چطوری می تونم حل کنم؟

  5. #5
    کاربر تازه وارد آواتار Sociant
    تاریخ عضویت
    آبان 1387
    محل زندگی
    اراک
    پست
    88

    نقل قول: اشکال در استفاده از Thread ها

    شما نمیتونی از Threadی غیر از Thread سازنده فرم به کنترلهاش دسترسی داشته باشی
    پس راه حل اینه که از همون threadسازنده فرم استفاده کنی
    کلاس فرم (و البته همه کنترل ها) متدی داره با اسم Invoke و خاصیتی به اسم InvokeRequired از نوع boolean
    متد Invoke ، متدی را که تحت پوشش delegate بعنوان پارامتر میپذیره ، در Thread سازنده ی خودش اجرا میکنه
    خصوصیت InvokeRequired مشخص میکنه که آیا شما در Thread سازنده فرم قرار دارین یا خیر
    پس:
    ابتدا با استفاده ازInvokeRequired بررسی میکنیم که در Thread فرم قرار داریم یا نه . اگه قرار داشتیم که بدون هیچ کار اضافی ، کنترل مورد نظرمون رو دستکاری میکنیم ، در غیر این صورت متدی که میخواهیم در اون کنترل رو دستکاری کنیم تحت پوشش delegate به متد Invoke ارسال میکنیم تا اجرا بشهو کنترل رو دستکاری کنه.


    delegate void SampleDelegate();

    void SampleMethod()
    {
    if(form.InvokeRequired)
    {
    SampleDelegate d = new SampleDelegate(SampleMethod);
    form.Invoke(d);
    }
    else
    lable1.Text = "My text was changed";
    }

  6. #6

    نقل قول: اشکال در استفاده از Thread ها

    با سلام
    من فایل Threadin_inCSharp.rar رو سرع نگاه کردم ولی به نظر کامل میاد،

    تشکر

  7. #7

    نقل قول: اشکال در استفاده از Thread ها

    salam

    dar morede sakhtare tread ha tu c mikhastam bedunam.
    mer30

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

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