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 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题