线程工作代码

时间:2015-10-19 23:09:53

标签: c# windows service thread-safety

我使用以下Windows服务代码启动新线程来执行长时间运行的任务。停止Windows服务时,任务停止。

public partial class WorkerService : ServiceBase
{
    protected override void OnStart(string[] args)
    {
        Thread thread;
        thread = new Thread(DoWork);
        thread.IsBackground = true;
        thread.Start();
    }

    //OnStop code here

    private static void DoWork()
    {
        //Long-running task code here
    }
}

DoWork方法是否静态是否重要?我在Web上找到的大多数示例代码都使用静态代码。但是,代码似乎没有静态工作正常。

    private void DoWork()
    {
        //Long-running task code here
    }

当我的DoWork方法不使用静态时,我应该注意什么?

1 个答案:

答案 0 :(得分:1)

Here是关于静态方法是线程安全的类似SO问题的链接。在处理线程和线程池时,我总是实例化类。一个构造函数,一个用途,一个目的。线程是一种特殊用途的机制,我认为没有理由通过使DoWork()成为静态方法来分享它或静态或任何收益。