相关疑难解决方法(0)

内存泄漏使用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万
查看次数

如何将包含ILIST成员的对象序列化为XML?

我试图转换一个对象说用户有多个字段到XML.问题是我在尝试序列化ILIST成员时遇到异常.以下是我使用的代码:

var stringwriter = new System.IO.StringWriter(); 
var serializer = new XmlSerializer(User.GetType()); <!-- Getting exception here -->
serializer.Serialize(stringwriter, User); 
return stringwriter.ToString();
Run Code Online (Sandbox Code Playgroud)

我的用户看起来像这样:

class User
{       public virtual string Name{ get; set; }
        public virtual DateTime? LastUpdated { get; set; }

        public virtual int? ContactId { get; set; }

        public virtual IList<Sector> Sectors { get; set; }
        public virtual AccessLevel AccessLevel { get; set; }
        public virtual IList<UserRole> UserRole { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以检查我正在序列化的对象的类成员是否可序列化,然后调整该特定成员的逻辑.我对用户类的控制较少.:(所以任何方式,我可以扩展我的代码来处理IList成员将是首选.

c# xml serialization

2
推荐指数
1
解决办法
2937
查看次数

标签 统计

c# ×2

xml ×2

serialization ×1

streamreader ×1

xmlserializer ×1