2016-04-12 5 views
0

いくつかの大きなバイナリファイルをダウンロードしてディスクに保存するアプリケーションがあります。一部のマシンでは正常に動作し、他のマシンではダウンロードが99.9%完了し、URLStreamオブジェクトはEvent.COMPLETEを起動しません。URLStreamでEvent.COMPLETEが発生しないことがあるのはなぜですか?

これは、ここに表示される問題とほとんど同じです。

Why does URLStream complete event get dispatched when the file is not finished loading?

私は答えたが、まだありませんサイコロの1で説明した「キャッシュバスト」メソッドを使用して試してみました。

ご協力いただければ幸いです。ここで

は私がやろうとしています何を説明するのに役立ついくつかのサンプルコードです:

var contentURL:String = "http://some-large-binary-file-in-amazon-s3.tar"; 

var stream:URLStream = new URLStream(); 
stream.addEventListener(Event.COMPLETE, function(e:Event):void{ 
    //This should fire when the file is done downloading 
    //On some systems this fails to fire once in a while 
    //On other systems it never fails to fire    
}); 
stream.addEventListener(ProgressEvent.PROGRESS, function(pe:ProgressEvent):void{ 
    //Write the bytes available in the stream and save them to disk 
    //Note that a download will reach 100% complete in terms of total progress but the 'complete' event might still not fire. 
}); 

var urlRequest:URLRequest = new URLRequest(contentURL); 
//Here we might add some headers to the URL Request for resuming a file 
//but they don't matter, the 'Event.COMPLETE' will fail to fire with our without 
//these headers 
addCustomHeaders(urlRequest); 

stream.load(urlRequest); 
+0

コードはどこですか? – BotMaster

+0

コードサンプルを含むように投稿を更新しました。 – Phil

+0

** "一部のシステムではこれはしばらくしてから失敗します...他のものでは決して失敗しません..." *まず、失敗したシステムをチェックします。それはインターネット接続の問題ですか(例:大きなダウンロードをカットするものなどありますか?)あなたのコードに間違いがあるのではなく、ハードウェア/ネットワークの問題のようです(そうでなければ、すべてのシステムでうまく動作しません)。 –

答えて

0

芋、これはコードですあなたが意図的に起こっているものは何でも上の任意のコントロールを放棄し、ちょうどことを前提とどこが失敗することを意図すべてがそれ自身で動作し、うまくいくでしょう。私はURLStreamクラスでいかなる問題もなかったけど、ここで私は決してしないものを基本的にだん:

  1. 私は(あなたがいずれかを登録していない)使用可能なすべての異なるエラーイベントを登録しません。

  2. 私は決して匿名リスナーを使用しません。ダウンロードが完了するまではGCではないと考えられていますが、最後のビットをロードしている間にURLStreamが少しアイドル状態になることはまれではないので、安全ではありません。これらの匿名のリスナーを削除すると実際に問題が解決されると私は驚くことはありません。

+0

この例のコードは、説明のためのものであり、実動コードではありません。私の実際のアプリケーションでは、匿名関数は使用しませんが、私はそれらが重要であることに全く同意しません。プロダクションコードでは、すべてのエラーを待ち受けます。私がリンクしている投稿を見ても、まったく同じ問題です。 – Phil

+0

実際のコードとは何の関係もないコードを投稿するのは意味がありません。問題が存在します。 – BotMaster

関連する問題