delegate void MyIntDelgate(int i); private void button1_Click(object sender, EventArgs e)
{
System.Threading.ThreadStart ts = new System.Threading.ThreadStart(Compute);
System.Threading.Thread td = new System.Threading.Thread(ts);
td.Start();
button1.Enabled = false;
} private void Compute()
{
DateTime start = DateTime.Now;
for (int i = 0; i < 90000000; i++)
{
TimeSpan ts = DateTime.Now - start;
if (ts.TotalSeconds >= 2)
{
label1.Invoke(new MyIntDelgate(Update),i);
start = DateTime.Now;
}
}
button1.Enabled = true;
} private void Update(int i)
{
this.label1.Text = i.ToString();
}
{
System.Threading.ThreadStart ts = new System.Threading.ThreadStart(Compute);
System.Threading.Thread td = new System.Threading.Thread(ts);
td.Start();
button1.Enabled = false;
} private void Compute()
{
DateTime start = DateTime.Now;
for (int i = 0; i < 90000000; i++)
{
TimeSpan ts = DateTime.Now - start;
if (ts.TotalSeconds >= 2)
{
label1.Invoke(new MyIntDelgate(Update),i);
start = DateTime.Now;
}
}
button1.Enabled = true;
} private void Update(int i)
{
this.label1.Text = i.ToString();
}
解决方案 »
- c# socket TCP/IP 请教
- 双系统 问题
- 对比 服务器生成excel 客户下载 和 DataSetSurrogate+ICSharpCode压缩dataset导出excel
- 急这个SQL如何写啊??重传
- 关于GDI+绘图问题,如果要绘制30000个或者更多的几何图形在Panel上,请高手提供解决方案!!
- 【欢迎讨论】【使用GDI+如何在椭圆中画文字?要求文字不超出椭圆的范围,且文字与椭圆自适应】
- Datagrid中HyperLinkColumn的问题
- CSDN怎么了,连续N天也不加分
- 怎么改变DataGrid的列标题?
- 各位帮忙,求一个没有限制的删除文件恢复工具!!!
- asp.net (c#)高手请进来看看!!求助啊..
- 水晶报表向下钻取时出错
我觉得this.label1.Text = i.ToString(); 这个会报跨线程不可操作的异常
还要委托处理下
每2秒钟返回一次
这个考虑线程计时器Threading.Timer
form2窗体放一时钟2秒触发一次将循环的值赋给公共变量,
form1要赋值的控件设为pulic
直接给控件赋值就可以了
使用BackgroundWorker组件进行异步操作编程
http://blog.csdn.net/zhzuo/archive/2008/07/23/2699305.aspx
摘要:本文介绍了BackgroundWorker组件的功能及在基于事件的异步操作编程中的应用,并对组件的实现原理进行简述。
你的button2点击如何写?并不是能解决问题,就可以绕过button2中的多线程操作!!,假如在button2的单击中,要执行的是从数据库中读取数据,不用多线程行吗?
事实上,我问的主要是:跨多线程,如何跨窗体传值!!我没说清楚?
int start=Environment.TickCount;
int end;
int outputindex=0;
for (int i = 0; i < 90000000; i++)
{
end=Environment.TickCount;
if( (end-start)/2>outputindex)
{
//outupt i to form1;
outputindex++;
}
}
--------------------
能给出跨线程在form1中显示结果的代码吗?我在这里憋了几天了,我是新手,才看C#没多久