0

尝试为具有不同时间的每个不同线程设置计时器,据我所知,如果我们在 main 方法中设置一个计时器,那么对于所有线程都一样,所以我想知道如何为每个不同的线程设置计时器而不会杀死线程,请就此提出建议

static Timer _timer;

static void Main(string[] args)
{
   _timer = new Timer(10000);
   _timer.Enabled = true;
   _timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
 }

上面粘贴的代码将为所有线程执行工作,每十秒运行一次,如何通过 main 方法中的计时器每十秒运行一次所有线程,我担心的是必须为每个线程设置不同时间的计时器

概括:

为什么我问这个问题,这里我有窗口服务的要求,要做什么意味着,例如在一个窗口服务中,有三个不同的线程(XYZ,ABC,PQR),如果我启动一个服务,所有三个线程被初始化并且这些线程应该被作为基于我们从应用程序配置传递的计时器设置,这些线程必须根据设置的时间被触发,请建议

4

2 回答 2

0

如果要在给定时间后启动一些线程,可以使用 System.Threading.Timer。

int[] times = new int[] { 10000, 14000, 17000 };
foreach (int time in times)
{
System.Threading.Timer t = new System.Threading.Timer(MyTimerCallback, null, time, 0);
...
}

private void MyTimerCallback(object state)
{
  //Do some awesome stuff
}
于 2012-06-14T06:16:09.213 回答
0

您是否尝试过使用该[ThreadStatic]属性?这个属性定义了它所耦合的veriable不会在线程之间共享,并且会为每个线程创建一个他的副本。

[ThreadStatic]
static Timer _timer;

void MyThreadStartMethod()
{
    _timer=new Timer(value);
    ...
}

而且,我在您的代码中看不到任何线程。该Main方法由 CLR 调用以启动应用程序,并且每次都在不同的进程中运行。

于 2012-06-15T05:06:00.340 回答