Самый быстрый способ загрузки или кеширования от чрезвычайно медленного API? - PullRequest
2 голосов
/ 07 апреля 2009

Мой проект WPF использует iTunes API. Во время запуска есть несколько фоновых потоков, которые работают для загрузки библиотеки iTunes из API в память (это из соображений производительности после запуска приложения).

Однако загрузка библиотеки мучительно медленная. Около трех минут.

Совсем недавно я пытался сохранить библиотеку в DataSet, чтобы время загрузки было быстрее, и я мог просто обновить DataSet в фоновом режиме после запуска приложения, однако это тоже не сработало. Он не будет правильно сохранять DataSet.

Я также пытался использовать локальную базу данных MDF, но это не помогло по причинам, которые я не могу вспомнить.

Я думаю, что основным камнем преткновения является то, что мне нужно сохранить COM-объект iTunesLib.IITTrack.

У меня вопрос, я думаю, у вас, ребята, есть идеи, как я могу быстрее загрузить эту библиотеку? У меня заканчиваются идеи.

Ответы [ 2 ]

1 голос
/ 07 апреля 2009

Однако загрузка библиотеки мучительно медленно На порядок почти три минуты.

Что-то не так с этим временем загрузки, я предлагаю вам профилировать код и найти проблему, она намного выше нормы, либо это ошибка в вашем коде, либо в iTunes API.

Я не знаю об API iTunes, но из-за того, что это API-интерфейс COM, попытайтесь установить поток загрузки Tread.ApartmentState на STA, если API-интерфейс iTunes не использует поток MTA (который по умолчанию для потоков .net)

0 голосов
/ 11 апреля 2009

По моему опыту, загрузка из интерфейса COM COM в iTunes является медленным процессом. Я обнаружил, что iTunes сам по себе был «бутылочным горлышком», и мало что можно сделать.

...