c# - Threading.Timer 与 Autoreset 或单线程?

标签 c# multithreading timer

我想创建一个从 GSM 设备读取 SMS 消息的类。

我创建了一个计时器 (system.threading),每秒读取一次传入消息。


public void ReadMessage(){
//read sms messages
//and store it into the database
}

有时 ReadMessage() 需要一秒钟以上的时间。我怎样才能防止定时器 在前一个过程尚未完成时调用此过程?
1. AutoResetEventWaitOne 是否适用于此?
2. Threading.Timer 是一个好的选择吗?还是应该在单线程上完成?

最佳答案

您应该使用 System.Timers.Timer,它更易于使用。
(它是一个更友好的 Threading.Timer 包装器)

AutoReset设置为false,然后在处理程序结束时再次Start()计时器。

不要使用专用线程;保持线程无所事事以便您可以每秒唤醒它是没有意义的。

关于c# - Threading.Timer 与 Autoreset 或单线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448482/

相关文章:

java - 如何限制(队列)针对给定数据库执行的线程数量(每个并发测试的单独数据)?

c - 更新 select() 调用中的超时值

android - 是否存在线程安全计时器?

c# - 我可以在 MONO 中创建一个 dll/库以便在 Linux 下的 C++ 程序中使用吗?

c++ - 在C++中使用线程交替打印奇数和偶数打印

c# - WPF - 在运行时定义了一个列表源,但仍有设计时的示例数据

java - 在 Java 中将数据从 InputStream 管道传输到 OutputStream

java - 线程 sleep 阻止我的 Swing 应用程序执行

c# - JVM 和 CLR 如何知道何时启动

c# - 保证CPU响应?