我想创建一个从 GSM 设备读取 SMS 消息的类。
我创建了一个计时器 (system.threading),每秒读取一次传入消息。
public void ReadMessage(){
//read sms messages
//and store it into the database
}
有时 ReadMessage()
需要一秒钟以上的时间。我怎样才能防止定时器
在前一个过程尚未完成时调用此过程?
1. AutoResetEvent
和 WaitOne
是否适用于此?
2. Threading.Timer 是一个好的选择吗?还是应该在单线程上完成?
最佳答案
您应该使用 System.Timers.Timer
,它更易于使用。
(它是一个更友好的 Threading.Timer
包装器)
将AutoReset
设置为false
,然后在处理程序结束时再次Start()
计时器。
不要使用专用线程;保持线程无所事事以便您可以每秒唤醒它是没有意义的。
关于c# - Threading.Timer 与 Autoreset 或单线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448482/