我开发了Windows服务来处理记录将存储在数据库中的文件。当Windows服务找到一个文件时,它会创建一个线程并将每个文件分配给一个线程。我没有使用线程池。我想知道Windows服务何时停止,然后如何确定有多少线程正在运行以及它们是否完成。如果所有线程都被执行,那么windows服务可以成功停止。其他的Windows服务应等到所有线程执行或中止。如何实现这一点。Windows服务和线程编程.NET
1
A
回答
1
您始终可以将Thread
对象存储在列表中并从中进行管理。
喜欢的东西:
List<Thread> workerThreads = new Lits<Thread>();
Tread workerThread = new Thread(...);
workerThreads.Add(workerTread);
workerThreads.Start();
1
你需要保持运行的线程的列表。您可以通过将每个新线程添加到列表(在调用开始之前),并让worker方法从列表中删除线程(直接或通过在控制器对象上引发事件)来实现此目的。
基本上你需要自己照顾这个。
希望这有助于
1
当Windows服务停止?
当使用SCM关闭,你可以检查调用OnStop事件追踪关闭事件
如何确定有多少线程正在运行以及它们是否齐全? 只需将您创建的每个线程都保存在一个数组或列表中,并检查线程是否仍然运行,您可以在线程函数的末尾设置布尔变量。
要在特定条件下关闭服务,可以使用Environment.Exit方法。
相关问题
- 1. Windows服务和多线程
- 2. 多线程Windows服务的线程库
- 3. 线程的Windows服务
- 4. 多线程Windows服务 - Erlang
- 5. 暂停Windows服务线程?
- 6. libevent,windows和.NET编程
- 7. 编写基于.NET的REST服务 - 使用线程池和Singleton
- 8. 编程一个Windows服务
- 9. 线程:使用C#调用返回到.NET Windows服务的主线程
- 10. 的Android服务和线程
- 11. Android服务,线程和UI
- 12. WCF服务和线程
- 13. 以编程方式从.NET卸载Windows服务
- 14. Windows服务中的线程处理
- 15. 在Windows服务中监视线程
- 16. Windows服务的简单线程问题
- 17. Windows服务中的多个线程
- 18. MingW的多线程Windows服务
- 19. Windows服务中的多线程
- 20. 关闭具有线程的Windows服务
- 21. Windows服务计时器多线程
- 22. .net windows服务
- 23. .NET客户端web服务编程
- 24. .NET Windows服务,线程和垃圾回收(可能的内存泄漏)
- 25. C#.net windows服务与远程web服务进行通信
- 26. 以编程方式安装Windows服务
- 27. 以编程方式安装Windows服务
- 28. .Net服务和Windows应用程序在同一时间?
- 29. windows服务控制器应用程序编程接口驱动程序服务
- 30. 线程或服务
您不需要添加布尔值。只需检查线程的状态。它已经说过,如果线程停止或不。 – 2009-12-23 12:18:21
我知道你可以检查ThreadState属性,但如果你依赖它的话会导致很多问题;检查这个http://stackoverflow.com/questions/1010030/what-value-is-the-threadstate-property – 2009-12-23 13:07:24