在C#中,创建轮询机制的最佳方法是什么?所以我有一些代码可以定期做一些动作。
这适用于Web服务,因此任何与UI相关的解决方案都不适用。
由于
答案 0 :(得分:3)
“可以定期执行某些操作的代码”称为“计时器”。搜索MSDN,您会找到三到四个类,其中一些是非gui(System.Threading.Timer
会想到)。
编辑:需要向谁显示更改?如果它们仅对Web服务的其他使用者可见,则一种方法是每个传入请求可以检查定期操作是否过期并执行它。但是,如果(1)需要对例如以下内容进行更改,则不应以此方式执行此操作。同一数据库的其他客户端,或(2)定期更改需要比任意传入请求更大的权限。此外,如果客户端取消其请求,则可能会中断定期操作,并且执行操作可能会显着延迟对客户端的响应。由于这些原因,我不建议在正常的请求/响应处理中添加定期处理。
答案 1 :(得分:2)
如果你说你有一个应该定期对它自己采取行动的网络服务,那么我认为你还没有完全得到网络服务模式。 Web服务应该坐在那里(就像网页一样),直到有什么东西开始。
否则你正处理一个非常脆弱的情况,任何事情都可能导致它停止。
如果您有一些需要在计时器上运行的代码,那么您应该调查将该代码放在Windows服务中(不要与Web服务混淆)。这就是它们的用途。
答案 2 :(得分:0)
看一下System.Threading.Timer
课程。这会定期调用您提供的方法。这些调用是在一个单独的线程(线程池中的一个线程)上进行的。
答案 3 :(得分:0)
你想要使用计时器。
.NET框架中有一些计时器,包括:
请参阅此文章以获取有关选择正确选项的帮助:Comparing the Timer Classes in the .NET Framework Class Library
答案 4 :(得分:0)
听起来你想要一个Timer,但这在Web服务中使用没有意义。如果计时器在客户端中会更有意义。客户使用您的Web服务的是什么?