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

نام تاپیک: مشکل با backgroundworker

  1. #1
    کاربر تازه وارد آواتار Ir.WebDeveloper
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    یک شهر صنعتی
    پست
    50

    Question مشکل با backgroundworker

    سلام خدمت اساتید ارجمند
    برای انجام یک عملیات پیچیده(زمان بر) یک متد به نام COMPREP نوشتم که در رخداد DoWork یک backgroundworker صداش میزنم.منتها در انتهای این متد قراره یک ReportViewer در یک فرم Show بشه...
    ضمنا یک Progressbar هم استفاده کردم که مقدار پیشرفت رو نشون میده!
    همه چیز درسته فقط زمانی که میخواد فرم گزارش رو کامل لود کنه حالتی مثله not responding پیدا میکنه و چیزی نمایش داده نمیشه...
    Event مربوط به کامل شدن backgroundworker هم اجرا میشه اما نمیدونم چرا نمیتونه فرم رو نمایش بده(تصور میکنم پس از اتمام Thread گزارش اون به MainThread بر نمیگرده!)
    راه حل برای استفاده از backgroundworker زمانی که قراره فرم گزارشی در background نمایش داده بشه چیه؟؟؟
    ممنون دوستان.

  2. #2

    نقل قول: مشکل با backgroundworker

    برای نمایش فرم جدید باید از یکی از رویدادهای ProgressChanged یا RunWorkerCompleted مربوط به backgroundworker استفاده کنید.
    این 2 رویداد توسط نخ اصلی برنامه اجرا میشن در حالی که رویداد DoWork توسط نخ جدیدی اجرا میشه ، نمایش فرم توی نخ جدید معمولا همچین مشکلی داره.

  3. #3
    کاربر تازه وارد آواتار Ir.WebDeveloper
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    یک شهر صنعتی
    پست
    50

    نقل قول: مشکل با backgroundworker

    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    برای نمایش فرم جدید باید از یکی از رویدادهای ProgressChanged یا RunWorkerCompleted مربوط به backgroundworker استفاده کنید.
    این 2 رویداد توسط نخ اصلی برنامه اجرا میشن در حالی که رویداد DoWork توسط نخ جدیدی اجرا میشه ، نمایش فرم توی نخ جدید معمولا همچین مشکلی داره.
    من تویه اون پروسس یه دیتاست(DataTable) رو پر میکنم که باید به گزارش بفرستم.فکر میکنم باید از ویژگی Result بشه پاسش داد و در RunWorkerCompleted ازش استفاده کرد؟
    آخرین ویرایش به وسیله Ir.WebDeveloper : یک شنبه 24 مرداد 1389 در 07:47 صبح

  4. #4

    نقل قول: مشکل با backgroundworker

    من تویه اون پروسس یه دیتاست(DataTable) رو پر میکنم که باید به گزارش بفرستم.فکر میکنم باید از ویژگی Result بشه پاسش داد و در RunWorkerCompleted ازش استفاده کرد؟
    این خاصیت در اکثر مواقع برای همین منظور استفاده میشه
    در انتهای رویداد DoWork کد زیر رو بنویسید
    e.Result = dataTable1;

    و در رویداد RunWorkerCompleted کدی مثل کد زیر بنویسید
    dataGridView1.DataSource = (DataTable)e.Result;

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

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