我开发了一个 C#.Net windows 服务,它是一个单一的进程。在这个过程中,我使用 2 个第三方 Dll,一个用于 ZIP(Ionic),另一个用于 Excel(EPPlus)。
.EXE 的工作是:
- 读取 SDF 文件
- 将 SDF 文件数据写入 SQL Server 表
- 生成 Excel
- 创建 ZIP
在资源监视器中监视此特定 EXE 时,它显示 10 个线程正在运行。
注意:我没有在这个应用程序中使用任何线程。
操作系统是否使其成为 10 个线程?如果是,如何以及为什么?
我开发了一个 C#.Net windows 服务,它是一个单一的进程。在这个过程中,我使用 2 个第三方 Dll,一个用于 ZIP(Ionic),另一个用于 Excel(EPPlus)。
.EXE 的工作是:
在资源监视器中监视此特定 EXE 时,它显示 10 个线程正在运行。
注意:我没有在这个应用程序中使用任何线程。
操作系统是否使其成为 10 个线程?如果是,如何以及为什么?
相关:为什么这个简单的 .NET 控制台应用程序有这么多线程?
我将在 Visual Studio 2010 中使用一个简单的控制台应用程序,该应用程序添加对程序集的引用,该程序集生成一个类似于 3rd 方库可以执行的线程的线程。
Windows 服务可能具有不同的调试技术,并且可能具有由系统创建的各种正在运行的附加线程。
简单控制台
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ClassLibrary1.Class1.StartThread();
while (true)
{
System.Threading.Thread.Sleep(1000);
System.Diagnostics.Trace.TraceInformation("test2");
}
}
}
}
单独的类库程序集中的简单 API,作为对控制台项目的引用添加
using System.Threading.Tasks;
namespace ClassLibrary1
{
public class Class1
{
public static void StartThread()
{
var t = new Task(() => {
while(true)
{
System.Threading.Thread.Sleep(1000);
System.Diagnostics.Trace.TraceInformation("test1");
}
});
t.Start();
}
}
}
下图显示: