2012-04-13 9 views
1

大きな画像を表示しているパネルを作成しています。私は画像を表示するためにImageIO.read(URL)メソッドを使用しています。これで、指定したイメージURLの読み取りプロセスを中断または一時停止する機能を追加する必要があります。画像の読み込みを中断する/一時停止する方法はありますか?

どうすればいいですか?

BufferedImage image = null; 
URL urlImage = new URL(surl); 
image = ImageIO.read(urlImage); 
+1

* "読み取り機能を中断または一時停止する機能を追加する" * 'ImageIO.read()'はブロック方法で、私はあなたのチャンスが気に入らない。 OTOHこれは奇妙な要件のようです。これを実行して実装しようとしている機能は何ですか?私は 'InputStream'や' MediaTracker'を中心にして答えを出すことができますが、これを絞り込んで、この機能のユースケースや機能を記入してみてください。 –

+0

私のイメージファイルがクラウド上にあり、10-20MBのようなサイズの大きなクラウドアプリケーションを作成したいと思い、そのファイルを読み始めたら、私はそれを止めることができず、私は待っていません完全なファイルをダウンロードする。 –

答えて

0

あなたはInputStreamを閉じることができる別のスレッドが必要です。ImageIO.readが読んでいます。だから、最初にすべての、あなたはあなたのコードを再設計する必要があります。

他のスレッドで
final InputStream stream = new URL(surl).openStream(); 
// find a way to push the 'stream' reference to the other thread 
final BufferedImage image = ImageIO.read(stream); // this will block 

、あなたがstream.close()を呼び出す必要があります。

+0

ありがとう、私はそれを試してみます。 –

1

これを箱から出す方法はありません。あなたができることは、これを別のスレッドに入れて停止または中断することです。

Thread.stop()は、正当な理由で廃止予定とマークされ、メモリリークが発生する可能性があることを考慮してください。 Btw。なぜあなたはそのような機能を追加する必要がありますか?

+0

OPは、エンドユーザーがダウンロードを停止またはキャンセルできるようにしたいと考えています。 –

+0

@ MarkoTopolnikこれは私が推測する解決策になります。 – dwalldorf

+1

Thread.stop()を呼び出すことは決して解決策ではありません。特にI/Oを実行している場合は、解決策にはなりません。 –

関連する問題