zhangjunbo317 2013-09-05 08:07 采纳率: 0%
浏览 1809

Threading.Timer回调方法不会执行

申明了局部变量timer
private System.Threading.Timer timer;

timer = new System.Threading.Timer(new TimerCallback(madeThreads), null, 0, 200);

回调方法madeThreads没有执行,有没有人碰到过

我是希望200毫秒执行一次回调方法,如果申请局部变量
private ManualResetEvent eventTimer = new ManualResetEvent(false);

timer = new System.Threading.Timer(new TimerCallback(madeThreads), null, 0, 200);
eventTimer.WaitOne();加上这一条语句,就能实现,但是不知其中原因。似乎加了这条语句,就一直在等待一个消息,在没有等到这个消息的情况下timer才会每隔200毫秒执行一次回调方法。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-17 17:24
    关注

    System.Threading.Timer 是一个跨线程的计时器,它可以在指定的时间间隔内调用一个指定的回调方法。


    在你的代码中,你正在使用 TimerCallback 方法将 madeThreads 函数作为回调传递给 Timer 实例。但是,您在之后添加了 eventTimer.WaitOne() 语句,这会阻止程序继续运行并等待接收到的事件信号。因此,在没有收到信号之前,madeThreads 函数不会被调用。


    考虑移除 eventTimer.WaitOne() 语句,这样 Timer 实例就可以在每 200 毫秒调用一次 madeThreads 函数了。


    另外,可能是你的回调函数madeThreads本身有问题,比如可能抛出了异常,导致回调函数不能正常执行。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器