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

نام تاپیک: استفاده از background worker و progress bar

  1. #1

    Question استفاده از background worker و progress bar

    سلام دوستان
    من بعد از کلی جستجو باز هم متوجه نشدم چطوری میشه به صورت صحیح از background worker استفاده کرد
    به طور مثال الان من از این کد دارم استفاده می کنم برای ارسال فایل به یک کانال تلگرامی :

    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "Picture Files|*.jpg";
    ofd.FileName = String.Empty;
    DialogResult result = ofd.ShowDialog();
    if (result == DialogResult.OK)
    {
    filename = System.IO.Path.GetFileName(ofd.FileName);
    path = System.IO.Path.GetDirectoryName(ofd.FileName);
    byte[] file = System.IO.File.ReadAllBytes(path + "" + filename);
    telegram.file_send(file, filename);
    }


    خب این کد به درستی کار می کنه اما وقتایی که فایل بزرگه اتفاقی که میفته اینه که برنامه هنگ می کنه تا زمانیکه پروسس کامل بشه
    الان من میخوام دو تا چیز رو یاد بگیرم ...
    اول اینکه اگر بشه با استفاده از background worker این عملیات رو انجام بدم و وضعیت پروسس کار رو هم توی یک progress bar نشون بدم
    دوم اینکه برای زمان هایی که نمی خوام زیادی کاربر درگیر بشه یک پیام بدم که کار انجام شد و در واقع کار خودش در پس زمینه انجام بشه و کاربر رو معطل نکنه

    ممنون میشم راهنمایی کنید تا قدم به قدم کار جلو بره
    خودم کلی جستجو کردم به نتیجه مطلوب نرسیدم

  2. #2

    نقل قول: استفاده از background worker و progress bar

    از اساتید کسی نبود راهنمایی کنه یا حداقل لینک آموزشی چیزی بگذاره
    متشکرم

  3. #3

    نقل قول: استفاده از background worker و progress bar

    دوستان این رو پیدا کردم

    private void button1_Click_1(object sender, EventArgs e)
    {
    bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
    bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged);
    bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerComple ted);
    bgw.WorkerReportsProgress = true;
    bgw.RunWorkerAsync();
    }
    void bgw_DoWork(object sender, DoWorkEventArgs e)
    {
    int total = 57; //some number (this is your variable to change)!!

    for (int i = 0; i <= total; i++) //some number (total)
    {
    System.Threading.Thread.Sleep(100);
    int percents = (i * 100) / total;
    bgw.ReportProgress(percents, i);
    //2 arguments:
    //1. procenteges (from 0 t0 100) - i do a calcumation
    //2. some current value!
    }
    }

    void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    progressBar1.Value = e.ProgressPercentage;
    label1.Text = String.Format("Progress: {0} %", e.ProgressPercentage);
    label2.Text = String.Format("Total items transfered: {0}", e.UserState);
    }

    void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    //do the code when bgv completes its work
    }


    خب الان یعنی اون کد خودم رو باید درون dowork بگذارم درسته ؟؟
    بعد چطوری به progress bar بفهمونم که عملیات به اتمام رسیده؟؟
    ممنون میشم راهنمایی بفرمایید
    متشکرم

  4. #4
    مدیر بخش آواتار محمد رضا فاتحی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    کهنسالترین موجود زنده در شهر منه
    پست
    1,181

    نقل قول: استفاده از background worker و progress bar

    سلام
    رخداد RunWorkerCompleted زمانی زخ میده که کارتون تموم شده باشه(تابع doworkکارش تموم بشه)
    شما هرکاری که قراره بعد از اتمام عملیاتتون رخ بده رو تو این تابع بنویسید
    یک نقطه بیشتر فرق بین رحیم و رجیم نیست...از نقطه ای بترس که شیطانیت می کند

    ________________________

تاپیک های مشابه

  1. مشکل در استفاده از Background worker
    نوشته شده توسط azbddk در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 31 تیر 1393, 16:49 عصر
  2. سوال: اگر حلقه در کلاس دیگری باشد از Background Worker چطوری استفاده کنیم؟
    نوشته شده توسط دلتنگ اسمان در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 28 دی 1392, 21:26 عصر
  3. سوال: مشکل در استفاده از BackGround Worker
    نوشته شده توسط zidanerfan در بخش C#‎‎
    پاسخ: 7
    آخرین پست: چهارشنبه 18 دی 1392, 13:12 عصر
  4. نحوه استفاده از background worker
    نوشته شده توسط akobar در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 10 شهریور 1389, 11:19 صبح

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

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