【C#】按钮和timer 冲突,只运行按钮,等按钮运行完了才运行timer

privatevoidbutton1_Click(objectsender,EventArgse){Hello.StartOrStop=0;for(inti=0;i<10... private void button1_Click(object sender, EventArgs e)
{
Hello.StartOrStop = 0;
for (int i = 0; i < 10000; i++)
{
a += Convert.ToDouble(textBox2.Text);
Console.WriteLine(a);

}
Hello.StartOrStop = 1;
Hello.GATalbe = " ";

}
private void timer2_Tick(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(a);
}
设置timer2的interval为10毫秒,我停止程序进行逐条观测,发现程序是先进行button中的代码,直到算完才进行timer2,所以无法将变量a的数值实时在textBox中显示出来。
求解答~~
展开
 我来答
AAlyong
2012-08-12
知道答主
回答量:19
采纳率:0%
帮助的人:5.7万
展开全部
如果你所说timer2是每10毫秒钟运行一次,它一定是执行了,如果是你debug只是看到了程序执行的片面过程,而不是全面过程,所以你下的结论判断也一定是片面而不准确的。其实timer的debug调试一直以来是程序员头痛的事情,建议你将控制台作为一个日志类型的输出。将button1_click1事件对变量a的变化和timer2对a变量的变化全部依次输出到控制台中。同时建议你将timer2的interval调整为秒级别这样便于观察。其实如此修改后,你会在控制台中看到你所想看到的全部,这样你就理解了。代码修改如下:
private void button1_Click(object sender, EventArgs e)
{
Hello.StartOrStop = 0;
for (int i = 0; i < 10000; i++)
{
a += Convert.ToDouble(textBox2.Text);
Console.WriteLine(“button1_Click-->a=”+a.tostring());
Console.WriteLine(“button1_Click-->textBox1=”+textBox1.text);

}
Hello.StartOrStop = 1;
Hello.GATalbe = " ";

}
private void timer2_Tick(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(a);
Console.WriteLine(“timer2_Tick-->a=”+a.tostring());
Console.WriteLine(“timer2_Tick-->textBox1=”+textBox1.text);
}

由此你可以知道到底是a变量的问题还是textBox1.Text 显示的刷新问题。那里有问题处理那里。
匿名用户
2012-08-12
展开全部
那就开个线程吧。用现成来做timer控件做的事
追问
请问大侠~~怎么开线程啊,求大侠辛劳写个简单的小例子吧~~~~~谢谢大侠~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wodinnigefei00
2012-08-12
知道答主
回答量:14
采纳率:0%
帮助的人:7.2万
展开全部
你要让timer中的运行休眠
就是this.sheep();
Text中就应该会显示了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式