C# 从极慢的API加载或缓存的最快方式?

C# 从极慢的API加载或缓存的最快方式?,c#,itunes,C#,Itunes,我的WPF项目使用iTunesAPI。在启动时,有几个后台线程将iTunes库从API加载到内存中(这是因为应用程序运行后的性能原因) 但是,加载库的速度非常慢。大约三分钟 最近,我尝试将库保存到一个数据集,这样加载时间会更快,我可以在应用程序运行后在后台更新数据集,但是这也没有真正起作用。它无法正确保存数据集 我也尝试过使用本地MDF数据库,但由于我也记不清的原因,出现了错误 我认为主要的症结在于我需要保存iTunesLib.IITTrack COM对象 我的问题是,我想,你们对我如何更快地加

我的WPF项目使用iTunesAPI。在启动时,有几个后台线程将iTunes库从API加载到内存中(这是因为应用程序运行后的性能原因)

但是,加载库的速度非常慢。大约三分钟

最近,我尝试将库保存到一个数据集,这样加载时间会更快,我可以在应用程序运行后在后台更新数据集,但是这也没有真正起作用。它无法正确保存数据集

我也尝试过使用本地MDF数据库,但由于我也记不清的原因,出现了错误

我认为主要的症结在于我需要保存iTunesLib.IITTrack COM对象

我的问题是,我想,你们对我如何更快地加载这个库有什么想法吗?我的点子快用完了

但是,加载库是非常困难的 慢得令人痛苦。几乎 三分钟

加载时间有点问题,我建议您分析代码并找出问题所在,这比正常情况要好得多,要么是代码中的错误,要么是iTunesAPI中的错误


我不知道iTunes api,但因为它是COM api,所以请尝试将加载线程设置为STA,以防iTunes api不使用MTA线程(这是.net线程的默认设置)

根据我的经验,从iTunes COM接口加载是一个缓慢的过程。我发现iTunes本身就是一个瓶颈,没什么可以做的。

我把它们像这样切换到STA:this.Dispatcher.Thread.SetApartmentState(ApartmentState.STA);什么也没有改变。我无法想象这是我的密码。。它基本上只是一个for循环,用于创建歌曲对象并将其添加到集合中。我必须看看我是否可以修剪任何脂肪。不能在线程运行后设置ApartmentState,请在创建线程之前设置它(如果您自己创建踏板,也就是说,如果没有,请尝试自己创建加载线程,并查看是否有任何更改).我见过很多com对象不在STA线程上运行的奇怪问题,所以这是我最好的猜测。我重新构造了加载代码,并将其缩短到30秒左右。更容易接受,可能还有一些改进。