|
通过引发 Timer 事件,可以有规律地隔一段时间执行一次代码,案例如下:
ps:1.支持System.Threading.Timer和System.Timers.Timer两种
2.使用时需注册到MobileManagedTimer和MobileManagedThreadingTimer两个类,否则在使用Timer的时候,会出现提示
原因是为了防止界面上创建的线程或计时器在界面关闭或客户端连接Session结束后不能合理的释放,所以需要使用托管的线程和计时器,这样在Form关闭时或Client Session Close的时候,可以被系统自动释放。
3.同时在托管线程和Timer里提供了FormClosed,FormDeactivate,FormActivated,SessionStoped事件,方便在不同的情况下,比如在打开另外一个窗体时,当前窗体的计时器停止,在返回到当前窗体的时候,计时器开始工作的操作
一、VB代码案例:
- '调用Timer
- Dim timerobj As New Timers.Timer(10000)
- '需要注册到MobileManagedTimer和MobileManagedThreadingTimer两个类,否则在使用Timer的时候,会出现提示
- Dim mangedTimer As New ManagedThreading.MobileManagedTimer(timerobj, "")
- AddHandler mangedTimer.FormDeactivate, Sub() timerobj.Stop()
- AddHandler mangedTimer.FormActivated, Sub() timerobj.Start()
- AddHandler mangedTimer.SessionStoped, Sub()
- timerobj.Stop()
- timerobj.Close()
- timerobj.Dispose()
- End Sub
- AddHandler timerobj.Elapsed, Sub(s, e1)
- Try
- '赋值
- ManagedThreading.MobileManagedThreadBase.SetThreadSession(Me.Client.SessionID)
- Me.Label1.Text = DateTime.Now.ToString("HH24:mm:ss")
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- timerobj.Enabled = True
- timerobj.Start()
复制代码
二、C#代码案例:
- //调用Timer
- System.Timers.Timer timerobj = new System.Timers.Timer(10000);
- //需要注册到MobileManagedTimer和MobileManagedThreadingTimer两个类,否则在使用Timer的时候,会出现提示
- Smobiler.Core.ManagedThreading.MobileManagedTimer mangedTimer = new Smobiler.Core.ManagedThreading.MobileManagedTimer(timerobj, "");
- mangedTimer.FormDeactivate += (obj,args) => timerobj.Stop();
- mangedTimer.FormActivated += (obj, args) => timerobj.Start();
- mangedTimer.SessionStoped += (obj, args) =>
- {
- timerobj.Stop();
- timerobj.Close();
- timerobj.Dispose();
- };
- timerobj.Elapsed += (s, e1) =>
- {
- try
- {
- //赋值
- Smobiler.Core.ManagedThreading.MobileManagedThreadBase.SetThreadSession(this.Client.SessionID);
- this.Label1.Text = DateTime.Now.ToString("HH24:mm:ss");
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- };
- timerobj.Enabled = true;
- timerobj.Start();
复制代码
|
|