由于WPF应用程序启动缓慢,正在更换XmlSerializer

由于WPF应用程序启动缓慢,正在更换XmlSerializer,wpf,startup,xmlserializer,Wpf,Startup,Xmlserializer,我编写了一个WPF应用程序,它从网络位置的XML文件中读取电影列表。当我开始研究启动缓慢的问题时,发现XmlSerializer有很多开销 在发布项目之前,我已经使用sgen构建了程序集,但现在我正在寻找更好的解决方案。我已经看过BinaryFormatter类,但是XML文件是由Linux服务器上运行的PHP脚本创建的 我最好自己使用XML文件读取器并循环浏览文件,还是有更好的选择?我的目标是提高速度,因此欢迎任何关于替换我的XmlSerializer的建议 下面是反序列化文件的代码

我编写了一个WPF应用程序,它从网络位置的XML文件中读取电影列表。当我开始研究启动缓慢的问题时,发现XmlSerializer有很多开销

在发布项目之前,我已经使用sgen构建了程序集,但现在我正在寻找更好的解决方案。我已经看过BinaryFormatter类,但是XML文件是由Linux服务器上运行的PHP脚本创建的

我最好自己使用XML文件读取器并循环浏览文件,还是有更好的选择?我的目标是提高速度,因此欢迎任何关于替换我的XmlSerializer的建议

下面是反序列化文件的代码

    public List<Movie> DeSerializeXmlObject(string filename)
    {
        List<Movie> movies;
        Stream stream = File.Open(filename, FileMode.Open);
        XmlSerializer s = new XmlSerializer(typeof(List<Movie>));
        movies = (List<Movie>)s.Deserialize(stream);
        stream.Close();
        return movies;
    }
我不知道如何附加文件,所以我将XML文件粘贴到了pastebin上。 谢谢

你很可能做错了什么。即使是1MB的xml解析也不会超过1秒。请将您的序列化和反序列化代码与您试图解析的XML文件一起发布好吗


编辑:对不起,我想我帮不了你。您的代码和文件看起来不错。我现在看到的唯一选择是在后台工作程序中延迟加载此文件,然后在GUI线程中设置回电影。

您能延迟反序列化吗?若是这样,您可能能够通过unity/prism延迟加载程序集,直到您的程序中真正需要它为止。这样您的加载时间就会更快,第一个窗口显示了一个包含所有电影的列表视图。在加载的事件中调用反序列化方法会与在窗口构造函数中调用它有很大区别吗?我怀疑加载的事件不会有很大区别。XML文件有多大?要序列化的实体有多复杂?文件有85kb,实体有4个属性。您说过它位于网络位置?也许是网络访问很耗时。你面临的延误有多大?85K一点也不多。我已经更新了我的问题以显示代码。我还将XML文件粘贴到了pastebin。我懒散地加载了该文件,似乎延迟的主要部分是通过网络传输该文件。