WCF 宿主程序是否为服务打开第二个线程?

Are WCF host programs opening a second thread for the service?

我一直在尝试了解 WCF 服务和主机。我制作了一个简单的主机程序来托管我的简单服务。可以正常使用,但是我不明白宿主程序在打开服务后如何继续完成不相关的任务。服务 运行 是否在幕后打开的单独线程上?或者当我的客户调用该服务时,是否会暂停主机程序?我没有在任何地方看到该记录。

   namespace MyHostProgram
    {
        class Program
        {
            static void Main(string[] args)
            {
                var host = new ServiceHost(typeof(MyServices.Service1));
                host.Open();

                while (true)
                {
                   Console.Writeline("Doing other tasks in host program");
                }

                host.Close();
            }
        }
    }

请注意,我不是在问添加另一个线程是否会像 WCF Service and Threading 那样加快速度,我是在问默认行为是什么。

这意味着 Open() 会生成一个包含传输 receive-loop 或注册异步回调(取决于绑定)的新线程。

您可以考虑阅读 multi-threading 和异步编程以更好地掌握这一点。

希望对您有所帮助!

当您调用 ServiceHost class 的 Open 函数时,它会在配置的终结点上创建并打开服务的侦听器。它异步执行此操作,并将控制权交还给调用线程。

所以你的问题的答案是:

Does the service run on a separate thread that opens behind the scenes?

when my client calls the service, does that pause the host program?

没有