2017-05-22 4 views
0

私は、ユーザーがボタンを押して動的なレポートを作成できるWebサイトを持っています。レポートは正常に作成されますが、(ASP.NETで書かれた)時間がかかることがあります。 (Sidenote:レポートは外部のVBプログラムで作成されています - これは問題なく動作します)ファイルが存在するかどうかを確認し、存在するまで画面にメッセージを表示しない場合

ファイルがまだ存在しない場合は、画面に「あなたのファイルがある間はお待ちください作成されましたが、現時点ではメッセージは表示されませんが、ファイルがフォルダに存在するとすぐに、期待どおりにダウンロードされます。

レポートが生成されている間にメッセージを表示するにはどうすればよいですか?次のように

私のコードは次のとおりです。

while (true) 
    try 
    { 
     string exportDateFileName = exportRequest.ToString("yyyyMMdd_hhmmss"); 
     Response.ContentType = "APPLICATION/OCTET-STREAM"; 
     String Header = "Attachment; Filename=PartPrediction" + ddl_country.SelectedItem.Text + ".xlsx"; 
     Response.AppendHeader("Content-Disposition", Header); 
     // System.IO.FileInfo Dfile = new System.IO.FileInfo("~/Transfer/Exports/"+ exportDateFileName+".xlsx"); 
     System.IO.FileInfo Dfile = new System.IO.FileInfo("~/Transfer/Exports/Book1.xlsx"); 

     Response.WriteFile(Dfile.FullName); 
     Response.End(); 
    } 
    //wait for the file to be created 
    catch (Exception ex) 
    { 

     if(!File.Exists("~/Transfer/_Exports/Book1.xlsx")) 
     { 

     System.Threading.Thread.Sleep(2000); 
     downloadingMessage.Visible=true; 
    } 

何かアドバイスははるかに高く評価されます!

+1

かあれば(!File.Exists( "〜/転送/ _Exports/Book1.xlsx")){//何もしない}ながらプッシュ機構を実装して確認してくださいファイルが作成されるのを待つ必要があります。 –

+0

@MuhammadRamzanありがとうございます。しかし、ファイルが作成されている間に待つようにメッセージが表示されます。 – akb29

+1

1つのアドバイス:ファイルが存在するということは自動的にディスクへの書き込みが完了したことを意味しません。ファイルがいつ始まったか、(他のアプリケーション)がファイルへの書き込みを終了したときに違いがあります。 – Flater

答えて

0

ファイルが使用を存在するか

if(!File.Exists("~/Transfer/_Exports/Book1.xlsx")) 
{ 
    PushSomeMessage("file is not ready yet, please wait"); 
} 
+0

ありがとう、しかし、私はエラー "現在のコンテキストに名前 'PushSomeMessage'が存在しません"。アセンブリの参照がありませんか? – akb29

+0

私は前に言ったように、あなたのコードにPushSomeMessageを実装できるように、例えばSignalRのようなプッシュライブラリを追加すべきです – mostafa

関連する問題