windows 服务中的正版香奈儿服务器?

Geniune channel server in a windows service?

我正在windows服务中开发一个带有正版通道的服务器,看来它不像控制台应用程序那么简单。当创建服务器的线程完成其工作时,在线程范围内声明的所有变量都将被销毁,因此客户端无法再连接到该服务器。使用控制台应用程序,我们可以使用 console.readline() 避免这种情况,但 windows 服务的情况不同。所以第一个代码块用于创建服务器的 windows 服务线程,第二个代码块用于控制台应用程序。

public void startServer()
{
 System.Configuration.ConfigurationSettings.GetConfig("DNS");
 GenuineGlobalEventProvider.GenuineChannelsGlobalEvent += new GenuineChannelsGlobalEventHandler(GenuineChannelsEventHandler);
 var Path = AppDomain.CurrentDomain.BaseDirectory;
 RemotingConfiguration.Configure(Path + "Server.exe.config");
 RemotingServices.Marshal(new Agent(), "Server.rem");
}


static void Main(string[] args)
{
 System.Configuration.ConfigurationSettings.GetConfig("DNS");
 GenuineGlobalEventProvider.GenuineChannelsGlobalEvent += new GenuineChannelsGlobalEventHandler(GenuineChannelsEventHandler);
 var Path = AppDomain.CurrentDomain.BaseDirectory;
 RemotingConfiguration.Configure(Path + "Server.exe.config");
 RemotingServices.Marshal(new Agent(), "Server.rem");
 Console.ReadLine();
 }

我错过了什么吗?如何实现服务器的可用性?

尝试在调用 Start 时将 Agent 存储在您的服务 class 中,并在调用 Stop 时在服务关闭时处理它。

附带说明一下,如果这是问题所在,那么您的控制台应用程序也没有充分的理由工作。 C# 不是 C++,离开作用域时不会调用析构函数。另外,为什么要远程处理而不是更受支持的东西?