PDA

View Full Version : زمان باقیمانده backgroundWorker



mehrdad.ghorbaniyan
پنج شنبه 21 خرداد 1394, 10:24 صبح
سلام دوستان. من برنامم قراره یه محاسبات سنگینی انجام بده و ممنکه ساعت ها طول بکشه.میخوام زمان باقیمانده را نشون کاربر بده اما نمیدونم با چ کدی
میشه کمک کنید ؟
ممنون

winner1
پنج شنبه 21 خرداد 1394, 11:02 صبح
شما کار prgress bar رو جستجو کن بسیار سادست

mehrdad.ghorbaniyan
پنج شنبه 21 خرداد 1394, 12:30 عصر
شما کار prgress bar رو جستجو کن بسیار سادست


ممنون . ProgressBar هم گذاشتم ولی من میخوام حساب کنم این محاسبات چقدر زمان میبره انجام بشه بعد نشون بدم مثلاً 20 دقیقه طول میکشه

reza_ali202000
پنج شنبه 21 خرداد 1394, 14:33 عصر
1. تعداد کاری که باید انجام بشه(ماکس پروگرسبار)
2. از طریق watch stop زمان یکیشو بدست بیار.
(1*2)-(2*progeres.value)=مدت زمان باقی مانده
فک کنم حله دیگه

khokhan
پنج شنبه 21 خرداد 1394, 15:16 عصر
ولی من میخوام حساب کنم این محاسبات چقدر زمان میبره انجام بشه بعد نشون بدم مثلاً 20 دقیقه طول میکشه

.................................................. .................................................. .............

void m_oWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{

DateTime m_operationStart = DateTime.UtcNow;
if (e.ProgressPercentage != 0)
{
double percentageComplete = (double)e.ProgressPercentage / m_csNumLines;

TimeSpan timeSinceStart = DateTime.Now.Subtract(m_operationStart);
TimeSpan totalTime = TimeSpan.FromMilliseconds(timeSinceStart.TotalMill iseconds / percentageComplete);
TimeSpan timeLeft = totalTime - timeSinceStart;

label1.Text = " کل زمان " + totalTime + " سپری شده " + timeLeft;

toolStripStatusLabel1.Text = "تعداد " + e.ProgressPercentage.ToString() + " از " + m_csNumLines + " در " + (int)(100.0 * percentageComplete) + "% در حال شمارش است ";
}
else
toolStripStatusLabel1.Text = "تعداد " + e.ProgressPercentage.ToString() + " از " + m_csNumLines;
}

حالا خودت هرطور که خواستی کدها رو تغییر بده و سرو ته قضیه رو هم بیار

reza_ali202000
پنج شنبه 21 خرداد 1394, 15:23 عصر
فکر میکنم دیگه مشکلتون حل بشه.