【问题标题】:Calling method inside timers timer Elapsedevent在定时器定时器 Elapsed 事件中调用方法
【发布时间】:2014-09-25 18:03:31
【问题描述】:

我想知道,当我们在经过的计时器内调用方法时,是否总是需要放入 lock 关键字以实现该方法的线程安全。

我的代码没有使用任何共享变量并在 Elapsedevent 内部调用。 我是否需要锁定它,否则会很好,因为线程有自己的堆栈。

这是我的 Elapsedevent 代码,

void t_Elapsed(object sender, ElapsedEventArgs e)
{
    Test t = new Test();
    t.Process();
}    

class Test
{
    public void Process()
    {    
        // do ingsome processing using only local variables.
    }
}

【问题讨论】:

  • 如果一个方法根本没有可观察到的副作用,那么它可能应该被删除,因为它没有完成任何事情。 Process() 方法中隐藏着一些我们看不到的东西。

标签: c# synchronization thread-safety system.timers.timer


【解决方案1】:

如果一个方法不使用共享状态,那它本质上是线程安全的。你根本不需要锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多