我一直在谷歌搜索过去几个小时并尝试不同的东西,但似乎不能在这个底部....
当我运行此代码时,内存使用量不断增长.
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(); 但这似乎没有做任何事情.
我试图转换一个对象说用户有多个字段到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成员将是首选.