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

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




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

نام تاپيک: کار با backgroundWorker

  1. #1
    اگه نباشه جاش خالی می مونه CHAPTER's Avatar
    تاريخ عضويت
    Feb 2009
    محل سكونت
    -_-
    پست ها
    464

    پيش فرض کار با backgroundWorker

    سلام به همه دوستان
    من یه لیست ویو دارم که محتویات یه فایل xml رو توش نمایش می دم
    اما چون حجم اطلاعات زیاد هست اگر در فرم فریز می شه می خواستم از backgroundWorker استفاده کنم و متد اضافه کردن داده ها در لیست ویو رو در رویداد DoWork نوشتم ولی خطای cross-thread exception می ده علتش هم فکر کنم به خاطر اینکه لیست ویو توسط thread‌اصلی برنامه ایجاد شده
    می تونید راهنمایی بکنید چه کدی بنویسم
    ممنون از لطف دوستان

  2. #2
    اگه نباشه جاش خالی می مونه CHAPTER's Avatar
    تاريخ عضويت
    Feb 2009
    محل سكونت
    -_-
    پست ها
    464

    پيش فرض

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

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by CHAPTER; 05-09-2009 at 23:28.

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

    پيش فرض

    سلام
    ذات استفاده شما از متد Invoke صحیح است و راه حل مشکلتان همین است ولی نه اینکه کل دستورات را در آن اجرا کنید.
    اینطوری اصلاً فرقی نمیکند که از کامپونت استفاده کردید و همانطور که خودتان گفتید باز فرم فریز میشود.

    شما باید متد Invoke را فقط در جایی در داخل DoWork فراخوانی کنید که قصد دارید چیزی را در کنترلر اصلی روی فرم و یا خود فرم تغییر دهید.
    مثلاً فقط برای اضافه کردن آیتم به ListView باید از Invoke استفاده کنید.

    (
    البته راه حل غیر استانداری هم دارد که از طرف مایکروسافت سفارش نشده و بهتر است به همین Invoke استاندارد و سافارش شده عادت کنید!
    )

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


  5. #4
    اگه نباشه جاش خالی می مونه CHAPTER's Avatar
    تاريخ عضويت
    Feb 2009
    محل سكونت
    -_-
    پست ها
    464

    پيش فرض

    سلام
    ذات استفاده شما از متد Invoke صحیح است و راه حل مشکلتان همین است ولی نه اینکه کل دستورات را در آن اجرا کنید.
    اینطوری اصلاً فرقی نمیکند که از کامپونت استفاده کردید و همانطور که خودتان گفتید باز فرم فریز میشود.

    شما باید متد Invoke را فقط در جایی در داخل DoWork فراخوانی کنید که قصد دارید چیزی را در کنترلر اصلی روی فرم و یا خود فرم تغییر دهید.
    مثلاً فقط برای اضافه کردن آیتم به ListView باید از Invoke استفاده کنید.

    (
    البته راه حل غیر استانداری هم دارد که از طرف مایکروسافت سفارش نشده و بهتر است به همین Invoke استاندارد و سافارش شده عادت کنید!
    )
    حق با شما ست
    امتحان کردم دیدم درست شده
    بازم متشکرم

Thread Information

Users Browsing this Thread

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

User Tag List

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

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