小编Ale*_*999的帖子

内存泄漏使用StreamReader和XmlSerializer

我一直在谷歌搜索过去几个小时并尝试不同的东西,但似乎不能在这个底部....

当我运行此代码时,内存使用量不断增长.

while (true)
{
    try
    {
        foreach (string sym in stringlist)
        {
            StreamReader r = new StreamReader(@"C:\Program Files\" + sym + ".xml");
            XmlSerializer xml = new XmlSerializer(typeof(XMLObj), new XmlRootAttribute("rootNode"));
            XMLObj obj = (XMLObj)xml.Deserialize(r);                       
            obj.Dispose();
            r.Dispose();
            r.Close();
        }
    }    
    catch(Exception ex) 
    {
        Console.WriteLine(ex.ToString()); 
    }
    Thread.Sleep(1000);
    Console.Clear();
}
Run Code Online (Sandbox Code Playgroud)

XMLObj是一个自定义对象

[Serializable()]
public class XMLObj: IDisposable
{
    [XmlElement("block")]
    public List<XMLnode> nodes{ get; set; }

    public XMLObj() { }

    public void Dispose()
    {
        nodes.ForEach(n => n.Dispose());
        nodes= null;

        GC.SuppressFinalize(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试添加GC.Collect(); 但这似乎没有做任何事情.

c# xml streamreader xmlserializer

24
推荐指数
4
解决办法
1万
查看次数

如何处理Socket异常

Socket tempSocket;
try
{
    IPAddress addr = IPAddress.Parse(ip);
    IPEndPoint endpt = new IPEndPoint(addr, port);
    tempSocket = new Socket(endpt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    tempSocket.Connect(endpt);
}
catch
{
    OnDisconnected("Connection Error");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我的控制台程序不断崩溃,并显示错误消息,指出存在套接字异常,因为目标机器主动拒绝连接。这很好,因为有时另一端没有运行,这是正常的。我的问题是,如何正确处理这个问题,以便程序不会崩溃,而只是返回 False?我尝试用谷歌搜索这个,但找不到任何东西。 在此输入图像描述

c# sockets

1
推荐指数
1
解决办法
4万
查看次数

标签 统计

c# ×2

sockets ×1

streamreader ×1

xml ×1

xmlserializer ×1