页面上有一个label1,timer1,代码如下:private void timer1_Tick_1(object sender, EventArgs e) //timer1的tick事件
{
if (i == 1)
{
timer1.Stop();
}
else
{
Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
t.Start();
}
i++;
} public void TimerStart()
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
} private void Form1_Load(object sender, EventArgs e) //加载事件
{
timer1.Start();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;}
PS:现在的条件是执行完一次后,timer1必须停住,那么我在通过什么方式可以在以后每隔10s后再次启动timer1呢???想的头都大了,希望大神显灵!
{
if (i == 1)
{
timer1.Stop();
}
else
{
Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
t.Start();
}
i++;
} public void TimerStart()
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
} private void Form1_Load(object sender, EventArgs e) //加载事件
{
timer1.Start();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;}
PS:现在的条件是执行完一次后,timer1必须停住,那么我在通过什么方式可以在以后每隔10s后再次启动timer1呢???想的头都大了,希望大神显灵!
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;不建议使用这种方法,还有,为什么不把timer1的间隔设置成10s呢
就是在工具箱中拖出来的一个timer,应该是System.Form下的吧!我已经用红色的标出了timer必须stop,这个是我写的测试代码,因为真正的程序里需要stop它!
因为我后面用了线程了,所以必须的加上这个,否则会报错的!timer1里面本身就在控制线程thread,真正的程序里必须停止掉timer,这里的只是我写的demo!我的demo是希望能够在timer控制下的线程执行完某个操作停止后,通过什么方法再次启动!PS:如果我在页面是丢个button,正常启动!
如果是这样,首先设置间隔 10s ,再在 i++ 之前加上
if (i == 1)
{
timer1.Start();
}
处理部分就加在上面的 if 语句之前。
timer1_Tick_1 方法里 if 判断去掉,i 这个变量也不要,第一行就是 timer1.Stop();
TimerStart 方法最后一行加上 timer1.Start();
这样就是计时器到点触发后就先关闭计时器,启动线程做你的工作,工作完成后开启计时器,等 10s 又再触发计时器方法,再关闭计时器,开始处理工作,循环这样,不知是不是你要的效果?
{
try
{
if (i == 1)
{
return;
//timer1.Stop();
}
else
{
Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
t.Start();
}
}
finally
{
i++;
}
} public void TimerStart()
{
this.BeginInvoke(
new Action(
() =>
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
//label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
} private void Form1_Load(object sender, EventArgs e) //加载事件
{
timer1.Start();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; }PS:这段代码
else
{
Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
t.Start();
}其实是没有必要的,直接这样 else
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
//t.Start();
}应该就可以了嘛
public void TimerStart()
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
timer1.Start();
}ps:label1.Text = "maopian jijiang kaishi "
字符串的中文翻译是不是:毛片即将开始
{
timer1.Stop(); Thread t = new Thread(new ThreadStart(TimerStart)); //这里是线程
t.Start();
}public void TimerStart()
{
label1.Text = "maopian jijiang kaishi " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 做事 timer1.Start();
}private void Form1_Load(object sender, EventArgs e) //加载事件
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
timer1.Interval = 10000;
timer1.Start();
}