gpt4 book ai didi

C# 网络问题多进程

转载 作者:可可西里 更新时间:2023-11-01 02:49:31 30 4
gpt4 key购买 nike

每当我的客户端失去与服务器的连接时,我就会有一个重新连接循环,不断寻找服务器。

随着这个循环的运行,它会在每次尝试连接时生成一个 conhost.exe 和 csc.exe 进程,直到计算机速度变慢直至停止。

有谁知道什么会创建这些进程?

那么会发生什么情况,无论何时出现连接失败或连接丢失,我都会调用 Initialize。这应该正确处理所有组件,然后重新初始化它们。

NetworkInterface 和 TcpInterface 的初始化方法:

 public void Initialize()
{
if (ni != null)
{
ni.Dispose();
GC.Collect();
}

if (tcpInterface != null)
{
tcpInterface.Dispose();
}

tcpInterface = new TcpInterface();
if (!string.IsNullOrEmpty(ipAddress))
{
tcpInterface.Settings = new TcpSettings
{
RemoteIp = ipAddress,
Port = _port,
PacketDenotesLength = false
};
}

tcpInterface.NewConnection += new TcpInterface.TcpNetworkStateEventHandler(tcpInterface_NewConnection);
tcpInterface.FailConnection += new TcpInterface.ConnectionEventHandler(tcpInterface_FailConnection);
tcpInterface.ReceivePacket += new TcpInterface.TcpInterfacePacketEventHandler(tcpInterface_ReceivePacket);
tcpInterface.LoseConnection += new TcpInterface.TcpNetworkStateEventHandler(tcpInterface_LoseConnection);

ni = new NetworkInterface<string, PacketInfo>();
ni.Services.Register("TcpInterface", tcpInterface);

ni.Initialize();
}

为 TcpInterface 配置:

public void Dispose()
{
if (TcpClient != null)// && TcpClient.Connected)
{
if (TcpClient.Connected)
{
NetworkStream stream = TcpClient.GetStream();

if (stream != null)
{
stream.Close();
}
}
TcpClient.Close();
TcpClient = null;
}
Buffer = null;
BufferBuilder = null;
}

为ni处置:

 public void Dispose()
{
Services.Dispose();
}

最佳答案

csc.exe 是 C# 编译器。

您是否使用 XmlSerializer 进行序列化/反序列化?如果您没有生成程序集,则 XmlSerializer 将启动 csc.exe 并将一些代码编译到临时文件夹。

另一种选择是在 C# 中使用 CodeDom。然后代码将使用 csc.exe 进行编译。

关于C# 网络问题多进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607674/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com