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

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




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

نام تاپيک: پر شدن progressbar در حین انجام یک پروسه طولانی

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2011
    پست ها
    18

    پيش فرض پر شدن progressbar در حین انجام یک پروسه طولانی

    سلام بر دوستان
    من یک پروسه ای دارم که طولانی است و می خوام در حین انجام این پروسه یکprogressbar پر بشه و وقتی کامل پر شد این پروسه کامل انجام شده باشد و اطلاعات را توی grid بریزه . توی اینترنت search کردم backgroundworker را پیدا کردم . اما در رویداد dowork نمی تونم داده ای را به متغیری انتساب بدم برای حل این مشکل چه راه حل هایی را پیشنهاد می کنید؟
    البته برای اختصاص داده به grid باید از e.result استفاده کرد .
    در بعضی از مواقع هم از invoke و beginInvoke و EndInvoke , requireInvoke استفاده کردند که اصلا سر در نیاوردم اگر کسی در مورد این توابع چیزی می دونه کمی نوضیح بده ممنون میشم

  2. #2
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    بک ورکر چه ارتباطی داره به پراگرس بار؟!!!

    شما یه پراگرس بار بفرست تو فرم و برنامه نویسیش رو انجام بده!!البته اگر بلدی!! اگر هم بلد نیستی که اون یه موضوع دیگس و بگو تا برات کد بذاریم!!!!!
    البته من هنوز دقیقا نفهمیدم شما داری چیکار میکنی!

  3. #3
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2011
    پست ها
    18

    پيش فرض

    بک ورکر چه ارتباطی داره به پراگرس بار؟!!!

    شما یه پراگرس بار بفرست تو فرم و برنامه نویسیش رو انجام بده!!البته اگر بلدی!! اگر هم بلد نیستی که اون یه موضوع دیگس و بگو تا برات کد بذاریم!!!!!
    البته من هنوز دقیقا نفهمیدم شما داری چیکار میکنی!

    دوست عزیز اگر کدی داری بگذار اما ربط backgroundworker با progressbar
    backgroundworker چند تا رویداد داره یکیش DoWork است که پروسه ای را که طولانی است را توش می گذاری یک رویداد دیگه ای داره به نام
    ProgressChangedکه داخلش می تونی با استفاده از
    e.ProgressPercentage مقدار progressbar را set کنی و در رویداد
    RunWorkerCompletedوقتی پروسه ات تموم شد کاری را که می خوای انجام بدی (دقیقا همون کاری که من می خوام ،در حین انجام کار در dowork ، مقدار progressbar در رویداد ProgressChanged مقدار دهی میشه ) من این کار را تست کردم درست کار می کنه فقط یک مشکلی است که در DoWork نمی تونیم به اشیا فرممون دسترسی داشته باشیم
    توی پروژه اصلیم یک حلقه دارم که توش grid پر میشه اما من نمی تونم به grid دسترسی داشته باشم بهم خطا میده
    من بهترین راه را می خوام اگر کسی راه حل بهتری داره راهنماییم کنه
    البته توی سایت های خارجی این راه حل را پیشنهاد کرده بودند


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

    پيش فرض

    سلام
    در کل برای این قبیل کارها باید از چند ریسمانی (backgroundworker یا thread یا ...) استفاده کنید.

    ولی مشکل شما را میتوان به دو بخش تقسیم کرد.
    اول داشتن معیاری برای درصد فرآیند طی شده است و دوم اعمال و انتقال این معیار به کنترل مورد نظرتان جهت نمایش و گزارش به کاربر.

    در مورد اول، این مسئله به کد خودتان باز میگردد، شما باید معیاری برای حجم عملیات انجام شده و حجم عملیات باقی مانده داشته باشید.
    بطور معمول کارهای زمان بر دارای حلقه (while و for و foreach و...) داخلی هستند که باعث شده عملیات کند شود.
    شما باید بتوانید تعداد کل اجرا حلقه و تعداد اجرا شده فعلی حلقه را داشته باشید تا بتوانید معیاری برای درصد سپری شده و درصد باقیمانده تولید کنید.

    در مورد دوم، برای ارتباط با یک کنترل از داخل یک ریسمان باید از دستور begininvoke استفاده کنید.
    ولی اگر از backgroundworker برای کارتان استفاده میکنید رای گزارش درصد پیشرفت کار، این کلاس به نوعی مجهز به کدی مشابه begininvoke است.
    یعنی شما میتوانید از شی backgroundworker تان در زمان عملیات متد ReportProgress را اجرا کنید، (این متد مشابه عملیات begininvoke عمل میکند) که موجب به وجود آمدن رویداد ProgressChanged میشود، سپس شما میتوانید در این رویداد کنترل progressbar خودتان بروز کنید.

    برای آشنایی بیشتر با مسائل چند ریسمانی و مطالب پیرامون آن میتوانید مروری روی تاپیک های زیر داشته باشید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    شب خوش.

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


Thread Information

Users Browsing this Thread

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

User Tag List

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

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