我使用以下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方法不使用静态时,我应该注意什么?
答案 0 :(得分:1)
Here是关于静态方法是线程安全的类似SO问题的链接。在处理线程和线程池时,我总是实例化类。一个构造函数,一个用途,一个目的。线程是一种特殊用途的机制,我认为没有理由通过使DoWork()
成为静态方法来分享它或静态或任何收益。