c#中Timer是单线程还是多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中Timer是单线程还是多线程相关的知识,希望对你有一定的参考价值。
多线程..用时候还是要考虑下的..
比如TIMER处理的程序 执行完毕需要5秒,但TIMER间隔只设置了5秒以下的话.很多程序就会有冲突了.
有必要的话 在TIMER 事件开始时 先把TIMER控件停止,再TIMER事件结束前 再开下TIMER
TIMER.ENABLE=FALSE;
TIMER.ENABLE=TRUE; 参考技术A C#库中的Timer好像有三个:
Fomr中的Timer是会占用窗体线程的,通俗的说,可能会卡住界面
System.Threading中的Timer是会单独开线程的。
另外一个Timer我实在记不起来了,一般都推荐用System.Threading中的Timer 参考技术B private Thread endlessLoopThread;
private void startServer()
endlessLoopThread = new Thread(endlessLoopThreadMethod);
endlessLoopThread.IsBackground = true;
endlessLoopThread.Start();
private void endlessLoopThreadMethod()
// 这里就是线程空间。做些后台处理或者繁重计算的工作吧。
// 什么?!你不知道如何写繁重计算的代码?
// 快去读读《计算理论》吧!
private void timer1_Tick(object sender, EventArgs e)
startServer();
参考技术C 多线程,不过不需要我们处理,.net框架给我们处理了
C# 两个timer的 调用
我想在一个窗体里实现,一个timer显示时间,精确到1s,一个timer的程序每5秒运行一次,请问怎么实现??
参考技术A 2个方法都可以了,1:设置2个timer,互不干扰。
2:在显示时间的timer里增加一个判断
定义一个private static int loops;
在timer显示时间执行时loops++,if(loops==5)程序2;loops=0
看起来还是第一个方法比较好一点。追问
两个timer会互相影响的,做不到互不干扰
追答你用多线程方式啊,到点就启动线程啊,除非有共享数据段,一般不会有问题。
追问方便给我讲一讲多线程么??我不大明白~~我现在总是会遇到多线程冲突的问题。
本回答被提问者采纳 参考技术B 两个timer有关系吗?每个timer都有自己的名字吧如timer1,timer2
timer1设置时间1000
timer2设置时间5000
每个timer的事件触发就做自己的动作,不会有关系的。
在使用时
timer1.Start();
timer2.Start();
timer各控件会各自控制自己的时间,两不相关。追问
两个timer不能同时运行的,会有几秒的时间差,不信你试一下~
参考技术C 。。。设置两个timer完成不同的工作呀。
timer1.Interval = 1000;
timer2.Interval =5000;
然后编写各自完成的操作,两者互不相干。 参考技术D timer的程序每5秒运行一次:
int n = 0;//用于计数
private void timer1_Tick(object sender, EventArgs e)//每5000毫秒执行一次
n++;
MessageBox.Show("你好,这是第"+n+"次打招呼哦");//弹出对话框告诉你
if (n >= 4)//不能无限的循环下去,当弹出3个对话框了,就停
timer1.Enabled = false;//此属性为false,timer1_Tick事件就不会执行了
private void Form1_Load(object sender, EventArgs e)
timer1.Enabled = true; //设置为truetimer1_Tick实践就会执行,开始计时
timer1.Interval = 5000; //设置timer1的timer1_Tick实践执行周期为5000毫秒
显示时间可以直接调用函数Datetime.Now追问
要时时更新的话恐怕需要timer进行更新,我用的就是Datetime.Now,就算用了Datetime.Now,如果不用timer,也不是实时更新的
追答private void timer1_Tick(object sender, EventArgs e)
currentTime = System.DateTime.Now;
TextBox.Text = currentTime.ToString();
这样就行了哈~ 设置此timer的Interval 为1000ms 。
以上是关于c#中Timer是单线程还是多线程的主要内容,如果未能解决你的问题,请参考以下文章