110,533
社区成员
发帖
与我相关
我的任务
分享
Thread loop = new Thread(new ThreadStart(ThreadProc));
loop.IsBackground = true;
loop.Start();
private void ThreadProc()
{
int n = 100000000;
int i;
double sum = 0;
progressBar1.BeginInvoke(new Action(() =>
{
for(i=1;i<n;i++)
{
sum += 1.0 / i;
if(i%1000000==0) progressBar1.Increment(1);
}
MessageBox.Show(sum.ToString());
}));
}
private void ThreadProc()
{
int n = 100000000;
int i;
double sum = 0;
for (i = 1; i < n; i++)
{
sum += 1.0 / i;
if (i % 1000000 == 0)
{
if (value == 1) break;
progressBar1.BeginInvoke((Action)delegate
{
progressBar1.Increment(1);
});
}
}
MessageBox.Show(sum.ToString());
}
volatile int value = 0;
private void stopButton_Click(object sender, EventArgs e)
{
value = 1;
}
for(i=1;i<n;i++)
{
sum += 1.0 / i;
}
MessageBox.Show(sum.ToString());
么?你停止按钮单击事件的代码贴出来看看。
2、完成一次计算,指的是从开始执行到MessageBox.Show出值的时间间隔么?
然而一旦invoke了,程序就不再响应用户事件了,请问这该怎么办?
神马意思?
这样异步访问progressBar使得计算用时多了两倍
你指的是进度条达到100%的耗时?