【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中显示出来。
求解答~~ 展开
{
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中显示出来。
求解答~~ 展开
3个回答
展开全部
如果你所说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 显示的刷新问题。那里有问题处理那里。
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 显示的刷新问题。那里有问题处理那里。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询