【发布时间】:2012-03-31 17:49:10
【问题描述】:
我有一个 .Net 4.0 C# Windows 服务,它产生了许多连续运行的线程。每个线程根据计时器以不同的时间间隔运行。
我想在服务关闭时优雅地关闭这些线程。
由于其中一些线程可能要等待数小时才能进行处理,因此我需要唤醒它们并告诉它们退出。
我可以在这些线程中创建一个循环,以比它们的处理间隔更短的时间间隔定期检查一些全局变量,但我更喜欢一种信号机制,它会导致它们的计时器过早地弹出。
如何在不使用 Thread.Abort 或 Thread.Interrupt 的情况下唤醒这些等待计时器的线程?
【问题讨论】:
-
您不只是使用
Timer来完成工作(而不是使用计时器来锁定工作线程)的任何特殊原因? -
一个线程对于一个系统对象来说太昂贵了,除了等待几个小时之外什么都不做。您可以从 Timer 类中免费获得线程。
-
这是一个现有的服务,目前有一个用于不同类型处理的线程。它目前使用 Thread.Abort() 和 Sleep。我将研究使用 Timer 及其产生的线程。
标签: c# multithreading .net-4.0 timer