C# 有没有办法暂停所有线程。计时器?

C# 有没有办法暂停所有线程。计时器?,c#,.net,multithreading,timer,C#,.net,Multithreading,Timer,我是C#新手,我正在开发一个需要几个定时器的程序 我想知道当程序运行CPU密集型代码时,是否有一种方法可以同时暂停程序中的所有计时器 目前,当前启用的计时器试图赶上密集操作期间引发的所有计时器事件。我认为您可以创建这些计时器的列表(当您激活它们时)并手动禁用这些计时器(使用该方法).NET framework中无法获取所有正在运行的Threading.Timer实例的列表。但是您可以创建自己的计时器包装器,将所有正在运行的计时器添加到一个列表中,当然,当计时器完成时会删除它们 如果您只想确保方法

我是C#新手,我正在开发一个需要几个定时器的程序

我想知道当程序运行CPU密集型代码时,是否有一种方法可以同时暂停程序中的所有计时器


目前,当前启用的计时器试图赶上密集操作期间引发的所有计时器事件。

我认为您可以创建这些计时器的列表(当您激活它们时)并手动禁用这些计时器(使用该方法).NET framework中无法获取所有正在运行的Threading.Timer实例的列表。但是您可以创建自己的计时器包装器,将所有正在运行的计时器添加到一个列表中,当然,当计时器完成时会删除它们


如果您只想确保方法仅在CPU空闲时执行,则可以将计时器的线程优先级设置为较低的值。

您需要跟踪列表中创建的所有计时器,并在不希望它们运行时调用change方法

  List<System.Threading.Timer> TimerList = new List<System.Threading.Timer>();

  Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);
  Timer responseTimer = new Timer(tcb, autoEvent, 1000, 250);  

  TimerList.add(stateTimer);
  TimerList.add(responseTimer);

foreach (System.Threading.Timer t in TimerList)
{
  T.Change(TimeSpan(0), new(TimeSpan(0));
}
List TimerList=new List();
定时器状态定时器=新定时器(tcb,自动事件,1000,250);
定时器响应定时器=新定时器(tcb,自动事件,1000250);
TimerList.add(stateTimer);
TimerList.add(responseTimer);
foreach(TimerList中的System.Threading.Timer t)
{
T.改变(时间跨度(0),新(时间跨度(0));
}

我强烈建议编写一个代理类,该类包装一个计时器,内部有一个tick事件(不会停止),但发布自己的tick事件,维护一个订阅服务器列表以将tick发布到其中。然后您可以在外部事件处理程序上添加暂停/恢复更新的功能