c# ThreadTimer对象来回调

本文关键字:回调 对象 ThreadTimer | 更新日期: 2023-09-27 17:54:27

在我的wpf应用程序中,我使用ThreadTime如下:

TimerCallback tcb = new TimerCallback(TimerTask);
tmrdetectchanges = new Timer(tcb, "", 100, tmrinterval);  
private void TimerTask(object data)
{
    DetectChanges();
}

我只是传递" "到TimerTask参数,因为我不使用它。对我的项目有影响吗?在我的情况下,我需要使用这个参数吗?请建议。谢谢。

c# ThreadTimer对象来回调

From MSDN:

public delegate void TimerCallback(Object state)
国家

类型:系统。对象

对象包含特定于应用程序的信息与此调用的方法相关或null。

对您的程序几乎没有影响。有一些,但它是如此之小,你可能甚至不会注意到它。当你传入"时,它会在堆上分配一个新的字符串对象,所以在某些时候垃圾收集器必须找到它并释放它,我相信它会相对较快。

由于您没有使用用户数据参数,因此只需传递null。完全有效,节省了很少的CPU周期(用于调用和垃圾收集)

编辑:正如其他人纠正我的那样,传递字符串而不是null实际上几乎没有什么影响。但是,如果传入null,仍然可以节省一些CPU周期。传入"确实会生成一条额外的汇编指令(至少在调用端),在您的情况下,这将毫无用处

还请注意,我只验证了在调试中构建和发布可以优化,所以根本没有区别。如果是这样的话,我相信有人会纠正我的:)