2009-04-06 11 views
2

私のWPFプロジェクトはiTunes APIを利用しています。起動時には、iTunesライブラリをAPIからメモリに読み込むためのいくつかのバックグラウンドスレッドがあります(これは、アプリが実行されるとパフォーマンス上の理由からです)。極端に遅いAPIをロードまたはキャッシュする最速の方法は?

ただし、ライブラリを読み込むのは非常に遅いです。約3分のオーダー。

最近、私はライブラリをDataSetに保存しようとしましたが、読み込み時間が短縮され、アプリケーションが実行されてからバックグラウンドでデータセットを更新するだけでしたが、これは実際には機能しませんでした。それはデータセットを適切に保存しません。

私はローカルMDFデータベースを使用しようとしましたが、それは私が覚えていない理由で間違っていました。

私はiTunesLib.IITTrack COMオブジェクトを保存する必要があると主張しています。

私の質問は、皆さんがこのライブラリをより迅速にロードする方法についてのアイデアはありますか?私はアイデアが不足しています。

答えて

1

ただし、ライブラリのロードは 痛いほど遅いです。ほぼ の順番で3分。

何か問題が発生しました。コードをプロファイルして問題を見つけてください。通常の方法よりもコードやiTunesのAPIのバグです。

iTunes APIについてはわかりませんが、iTunes APIがMTAスレッド(.netスレッドのデフォルト)を使用していない場合は、COM APIを使用して読み込みスレッドTread.ApartmentStateをSTAに設定してください。

+0

私はそうのようにSTAにそれらを切り替え: \t \t \t \t this.Dispatcher.Thread.SetApartmentState(ApartmentState.STA)。 何も変わっていないようです。私はそれが私のコードだとは想像できません。基本的にSongオブジェクトを作成してコレクションに追加するforループです。脂肪を取り除くことができるかどうか見なければならない。 –

+0

ApartmentStateを実行すると、そのスレッドが作成される前に設定することはできません(自分自身でトレッドを作成する場合は、そうでない場合は、自分自身でロードスレッドを作成し、変更)。 –

+0

私はSTAスレッド上で実行されていないCOMオブジェクトで不思議な問題がたくさんあることが分かりました。これが私の推測です。 –

0

iTunes COMインターフェイスからの読み込みが遅いというのは私の経験です。私は、iTunes自体がボトルネックであり、実行できることはあまりありませんでした。

関連する問題