2

画像にアクセスするためのasp.netページ/ハンドラーがあります。画像に対して最初のリクエストを実行すると、画像のサイズを標準サイズに変更して(ディスクに保存)、元に戻します。したがって、1つを除くすべてのリクエストを画像にロックする必要があります。これは画像のサイズを変更します。URLのIDで識別される画像なので、1つの画像(URLのID)ごとに1つのロックオブジェクトが必要だと思います。私の質問は、このロックモデルをどのように整理できますか?

私のアイデアは、このApplication.Add(Request [Id]、new object());のようにアプリケーションにロックオブジェクトを追加します(アプリケーションは同期されます)。競合するスレッドをロックするために使用します。

このタスクは、DBの行ロックやコレクション内の要素のロックなどです。

リプレイありがとうございます。

4

1 に答える 1

1

最も簡単な方法は、で画像ファイルをロックすることです。


using (FileStream fs = new FileStream("image.file", FileMode.Create, FileAccess.Write, FileShare.None))
{

resize image here 

}

2番目(3番目など)のスレッドがファイルを作成しようとすると、「プロセスはファイルにアクセスできません...」という例外がスローされます。そして、私はこの例外をコードで処理します。

于 2009-11-06T12:40:23.410 に答える