我正在开发定期向设备发送消息的 ac# 应用程序。
第一个问题:运行定期(每 1 秒)发送消息的函数的最佳方法是什么?
第二个问题:有时我想停止周期性请求,运行一段代码,然后再次启动周期性请求。实施此机制的最佳方法是什么?
很明显,周期性请求应该在另一个线程中运行。
在运行“代码块”之前,停止定期请求并在代码块末尾重新开始可能是一种解决方案,但我想在定期请求方面实现一些智能。
我正在开发定期向设备发送消息的 ac# 应用程序。
第一个问题:运行定期(每 1 秒)发送消息的函数的最佳方法是什么?
第二个问题:有时我想停止周期性请求,运行一段代码,然后再次启动周期性请求。实施此机制的最佳方法是什么?
很明显,周期性请求应该在另一个线程中运行。
在运行“代码块”之前,停止定期请求并在代码块末尾重新开始可能是一种解决方案,但我想在定期请求方面实现一些智能。
第一个问题:你想要一个线程。在线程内部你想要一个无限循环。然后是if
检查计时器的语句。
第二个问题:那么你想要在那个循环里面有一个信号量。信号量将为您阻止代码,然后在您准备好后将其唤醒。
while(true)
{
check semaphore
if one second has passed
then send message.
}
您正在寻找窗口服务。窗口服务将解决您的问题。检查这些链接。
http://www.aspdotnet-suresh.com/2011/06/creating-windows-service-in-c-or.html
http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C
http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.110%29.aspx
线程计时器是你应该看的