c# Timer异常停止
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# Timer异常停止相关的知识,希望对你有一定的参考价值。
public void OnStart()
t = new System.Timers.Timer();
t.Interval = 10000;//间隔时间为15S
t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
//t.Stop(); 停止服务
/// <summary>
/// 定时检查,并执行方法
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
///
static object name = 0;
public void ChkSrv(object source, ElapsedEventArgs e)
t.Enabled = false;
t.Interval = 10000;//间隔时间为15S
lock (name)
name = Convert.ToInt32(name) + 1;
Thread.CurrentThread.Name = name.ToString();
//Console.WriteLine(DateTime.Now.ToString() + "-" + Thread.CurrentThread.Name);
//Thread.Sleep(1000000);
StatisticalData();
SetInnPointPo();//执行推送数据方法
SetInnPointApp();
t.Enabled = true;
执行ChkSrv()方法的时候会异常停止, IIS服务器
name = Convert.ToInt32(name) + 1;
Thread.CurrentThread.Name = name.ToString();//这里,只能给Name 属性赋值一次,不允许在 Name 属性不为null时对 它赋值
参考技术A 异常停止指什么?系统抛异常?还是说ChkSrv()不会继续运行下去?追问
ChkSrv()不会继续执行
追答Timer工作原理是新开一个线程没错,但是 Thread.CurrentThread指的就是这个线程,你可以尝试这样做:
public void ChkSrv(object source, ElapsedEventArgs e)
Thread newThread = new Thread(new ThreadStart(newThreadFunc));
newThread.Start();
public void newThreadFunc()
lock (name)
name = Convert.ToInt32(name) + 1;
Thread.CurrentThread.Name = name.ToString();
//Console.WriteLine(DateTime.Now.ToString() + "-" + Thread.CurrentThread.Name);
//Thread.Sleep(1000000);
StatisticalData();
SetInnPointPo();//执行推送数据方法
SetInnPointApp();
Thread.Abort();
还要在其他地方做点操作,让timer动起来。
c# timer停止不了,请问如何解决
下面是代码,检查一个进程,如果有就继续等待时间然后再检查,如果没有就启动一个进程,然后接着等到时间再检查,检查和等待还有启动都没问题,现在的问题是,有个按钮,点击停止timer,可是不管用,点击后,依然timer执行等待时间和检查,请问这个停止按钮该如何写
这一段是一个按钮点击开始计时的动做
private void button4_Click_1(object sender, EventArgs e)
button4.Text = ("监控中");
button4.Enabled = false ;
//到达时间的时候执行事件,周期为10秒;
System.Timers.Timer timer1 = new System.Timers.Timer(10 * 1000);
timer1.Elapsed += new System.Timers.ElapsedEventHandler(dz);
timer1.AutoReset = true; //设置一直执行(true)
timer1.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
button5.Enabled = true;
这一段是到时间后的timer执行内容
public void dz(object source, System.Timers.ElapsedEventArgs e)
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
bool isRunning = false;
foreach (System.Diagnostics.Process myProcess in myProcesses)
if ("test" == myProcess.ProcessName)
isRunning = true;
break;
if (!isRunning)
System.Diagnostics.Process.Start(@"D:\test\test.exe");
这个是那个停止按钮
private void button5_Click(object sender, EventArgs e)
timer1.Stop();
timer1.Enabled = false;
button5.Enabled = false;
button4.Enabled = true;
button4.Text = ("开始监控");
该如何改写才好呢,谢谢了
以上是关于c# Timer异常停止的主要内容,如果未能解决你的问题,请参考以下文章
C# winform中timer函数如何停止,点运行后可再次启动周期事件
C# winform中timer函数如何停止,点运行后可再次启动周期事件