110,533
社区成员
发帖
与我相关
我的任务
分享
System.Timers.Timer timer;
System.Timers.Timer timer_change;
public UserProssess()
{
InitializeComponent();
}
//开始计时器
public void loadInfo()
{
timer = new System.Timers.Timer();
timer_change = new System.Timers.Timer();
timer_change.Interval = 10;
timer_change.Elapsed += new System.Timers.ElapsedEventHandler(timer_change_Elapsed);
timer.Interval = 1000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
//停止计时器
public void stopInfo()
{
timer.Stop();
timer_change.Stop();
}
int To_prossess = 0;
int Form_prossess = 0;
bool isAdd = false;
static object oo = new object();
//计时器1,用来循环获取随机数,并开启界面更新计时器
public void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Dispatcher.BeginInvoke(new Action(() =>
{
timer_change.Stop();
lock (oo)
{
Random random = new Random();
To_prossess = random.Next(0, 100);
System.Threading.Thread.Sleep(12);
}
if (To_prossess > Form_prossess)
isAdd = true;
else if (To_prossess < Form_prossess)
isAdd = false;
else
return;
timer_change.Start();
}),
null);
}
//计时器2,10毫秒为单位,更新进度条,每次更新1%
public void timer_change_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (Form_prossess == To_prossess)
{
timer_change.Stop();
return;
}
if (isAdd)
Form_prossess++;
else
Form_prossess--;
this.Dispatcher.BeginInvoke(new Action(() =>
{
textBlock1.Text = Form_prossess.ToString() + "%";
rectangle1.Width = Form_prossess;
int a = (int)((255.0 / 100.0) * Form_prossess);
textBlock1.Foreground = new SolidColorBrush(Color.FromRgb((byte)a, (byte)100, (byte)0));
rectangle1.Fill = new SolidColorBrush(Color.FromRgb((byte)a, (byte)100, (byte)0));
}),
null);
}
lock (oo)
{
Random random = new Random();
To_prossess = random.Next(0, 100);
System.Threading.Thread.Sleep(12);
}
To_prossess = random.Next(0, 100);