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 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退