0

プログラムでTvdbLibを使用しています。このライブラリは、TVシリーズをより速くロードするためにキャッシュを使用できます。プログラムの速度をさらに向上させるために、私はテレビシリーズのすべての読み込みを別々のスレッドで行います。2つのスレッドが同時に実行され、キャッシュから同時に読み取り/書き込みを行おうとすると、次のエラーが発生します。

別のプロセスによって使用されているため、プロセスはファイル'C:\ BinaryCache \ 79349\series_79349.ser'にアクセスできません。

誰かがこれを回避し、プログラムをスムーズに実行する方法を知っていますか?

4

3 に答える 3

2

CacheProviderマルチスレッドシナリオで使用するために構築されていません...1つのスレッドでのみ使用するかlock、共有を介したすべてのアクセスで使用するかobject、すべてのスレッドにCacheProvider独自の独自の_rootディレクトリ(コンストラクター内)を提供します。

于 2012-11-21T11:10:09.817 に答える
1

lockステートメントを使用して、同時に1つのスレッドのみがキャッシュにアクセスしていることを確認できます。

http://msdn.microsoft.com/en-us/library/c5kehkcz(v=vs.71).aspx

于 2012-11-21T11:10:44.840 に答える
0

エラーから、TvdbLibは同じキャッシュにアクセスする複数の同時スレッドをサポートしていないと思います。これはオープンソースプロジェクトであるため、たとえばlockステートメントを使用して、ソースコードを取得し、キャッシュアクセスに関する独自の保護を実装できます。もちろん、TvdbLibを呼び出す前に独自のコード内でロックすることもできますが、これはより高いレベルになるため、ロックはより長く維持され、必要なきめ細かい同時実行性が得られない可能性があります。

于 2012-11-21T11:11:22.573 に答える