- PR -

bitmapが画像をつかんでしまう?

1
投稿者投稿内容
KOUJI
会議室デビュー日: 2003/11/14
投稿数: 7
投稿日時: 2004-04-10 10:22
お世話になります。

ASP.NETで開発を行っています。

次のような機能を含んだページを作成したいと考えているのですが
なかなかうまくいきません。

・クライアントからサーバにファイルをアップロードそれを表示する
・サーバにアップロードする際には、前回にアップロードしたファイルを
 削除後、新しいファイルをアップロードする

次のような場合にうまくいきません。

・ページ表示後、続けてファイルをアップロード
 つまり、一度アップロードした後、アップロードしたファイルを
 削除しようとする。

【エラー内容】
「プロセスはファイル "D:\upd_images\AAA.jpg" にアクセスできません。
 このファイルは別のプロセスが使用中です。 」


【ソース】
  LBL_gazou1.Text = fileinfo.Name

  bitmap = New Bitmap(strimagePATH & "\" & fileinfo.Name)

インタプリタにて確認すると、
掲載したソースの2行目、bitmap=〜 以降に
ファイルが削除、リネームなどできなくなります。

【解決法】
@bitmapがもしファイルをつかんでしまうのであれば、
 それを放す方法、というのが1つ。
Aもう一つはbitmap自体を使用しない方法。
 bitmapを使用している理由は、”画像ファイルの縦横のサイズ(ピクセル)を
 取得したい”ということだけです。
 (bitmap.Height、bitmap.widthを使用)
 ファイルサイズを取得できる方法が他にあるならば
 それでも解決できそうな気がします。

まずは@から調べてますが、なかなかうまくいきません。
どなたかご存知の方がおられましたら
ご教授願えませんでしょうか?

お手数ですがよろしくお願いいたします。




[ メッセージ編集済み 編集者: KOUJI 編集日時 2004-04-10 10:35 ]

[ メッセージ編集済み 編集者: KOUJI 編集日時 2004-04-10 10:36 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-10 10:56
諸農です。

試していませんが、

引用:

@bitmapがもしファイルをつかんでしまうのであれば、
 それを放す方法、というのが1つ。



コンストラクタにStreamを引数にするバージョンがありますので、
Fileクラスで読み込んでからBitmapを生成後に、StreamをCloseすれば
解決できるかもしれないです。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-04-10 11:05
Dispose()メソッド呼び出してみたらどうでしょう
KOUJI
会議室デビュー日: 2003/11/14
投稿数: 7
投稿日時: 2004-04-10 12:10
ご回答ありがとうございます。

いますぐ試してみます。

KOUJI
会議室デビュー日: 2003/11/14
投稿数: 7
投稿日時: 2004-04-10 13:09
お世話になっております。

bitmap.Dispose()を使用し、問題なく
ファイルを削除することが確認できました。


最初は
ヘルプを参照し、
bitmap.UnlockBits()を使用できるのかと思っていましたが
意味が違うようです(詳細は調査していませんが)。


ありがとうございました。


1

スキルアップ/キャリアアップ(JOB@IT)