| .NET Framework 类库 |
在应用程序中生成定期事件。
有关此类型所有成员的列表,请参阅 Timer 成员。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Timers.Timer
[Visual Basic] Public Class Timer Inherits Component Implements ISupportInitialize [C#] public class Timer : Component, ISupportInitialize [C++] public __gc class Timer : public Component, ISupportInitialize [JScript] public class Timer extends Component implements ISupportInitialize
线程安全
此类型的任何公共静态(在 Visual Basic 中为 Shared)成员对于多线程操作是安全的。但不能保证任何实例成员是线程安全的。
备注
Timer 组件是基于服务器的计时器,它使您能够指定在应用程序中引发 Elapsed 事件的周期性间隔。然后可以操控此事件以提供定期处理。例如,假设您有一台关键性服务器,必须每周 7 天、每天 24 小时都保持运行。可以创建一个使用 Timer 的服务,以定期检查服务器并确保系统开启并在运行。如果系统不响应,则该服务可以尝试重新启动服务器或通知管理员。
基于服务器的 Timer 是为在多线程环境中用于辅助线程而设计的。服务器计时器可以在线程间移动来处理引发的 Elapsed 事件,这样就可以比 Windows 计时器更精确地按时引发事件。有关基于服务器的计时器的更多信息,请参见“ 基于服务器的定时器简介 ”。
注意 甚至在调用 Stop 方法后,仍可以调用事件处理方法。事件处理方法可以在某个线程上运行,与此同时,对 Stop 方法的调用可以在另一个线程上运行。这可能导致即使在调用 Stop 方法后仍引发 Elapsed 事件。若要防止这种情况的发生,请使用 SignalTime 属性来比较引发事件的时间和调用 Stop 方法的时间。如果事件是在调用 Stop 方法后引发的,则不处理该事件。
基于 Interval 属性的值,Timer 组件引发 Elapsed 事件。可以处理该事件以执行所需的处理。例如,假设您有一个联机销售应用程序,它不断向数据库发送销售订单。编译发货指令的服务分批处理订单,而不是分别处理每个订单。可以使用 Timer 每 30 分钟启动一次批处理。
注意 当 AutoReset 设置为 false 时, Timer 只在第一个 Interval 过后引发一次 Elapsed 事件。若要保持以 Interval 时间间隔引发 Elapsed 事件,请将 AutoReset 设置为 true。
Timer 在运行时是不可见的。
有关 Timer 实例的初始属性值列表,请参见 Timer 构造函数。
示例
[Visual Basic, C#, C++] 以下示例创建一个 Timer,它每隔五秒钟在控制台上显示一次“Hello World!”。
[Visual Basic, C#, C++] 对于此示例,使用 System.Timers 命名空间。
[Visual Basic] Public Class Timer1 Public Shared Sub Main() Dim aTimer As New System.Timers.Timer() AddHandler aTimer.Elapsed, AddressOf OnTimedEvent ' Set the Interval to 5 seconds. aTimer.Interval = 5000 aTimer.Enabled = True Console.WriteLine("Press 'q' to quit the sample.") While Console.Read() <> CInt("q") End While End Sub ' Specify what you want to happen when the Elapsed event is raised. Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) Console.WriteLine("Hello World!") End Sub End Class [C#] public class Timer1 { public static void Main() { System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent); // Set the Interval to 5 seconds. aTimer.Interval=5000; aTimer.Enabled=true; Console.WriteLine("Press /'q/' to quit the sample."); while(Console.Read()!='q'); } // Specify what you want to happen when the Elapsed event is raised. private static void OnTimedEvent(object source, ElapsedEventArgs e) { Console.WriteLine("Hello World!"); } } [C++] public __gc class Timer1 { public: static void Main() { System::Timers::Timer* aTimer = new System::Timers::Timer; aTimer->Elapsed += new ElapsedEventHandler(0, Timer1::OnTimedEvent); // Set the Interval to 5 seconds. aTimer->Interval=5000; aTimer->Enabled=true; } private: // Specify what you want to happen when the Elapsed event is raised. static void OnTimedEvent(Object* /*source*/, ElapsedEventArgs* /*e*/) { Console::WriteLine(S"Hello World!"); } }; int main() { Timer1::Main(); Console::WriteLine(S"Press /'q/' to quit the sample."); while(Console::Read()!='q'); }
[JScript] 没有可用于 JScript 的示例。若要查看 Visual Basic、C# 或 C++ 示例,请单击页左上角的“语言筛选器”按钮
。
要求
命名空间: System.Timers
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列
程序集: System (在 System.dll 中)
本文介绍了Timer类,它可在应用程序中生成定期事件。该类是基于服务器的计时器,能指定引发Elapsed事件的周期性间隔。其公共静态成员线程安全,但实例成员不一定。还给出了使用示例,说明了其命名空间、平台和程序集要求。
2408

被折叠的 条评论
为什么被折叠?



