2012-04-07 5 views
2

ファイルの操作を行うページが1つあり、ファイルが完成したらamazon s3にアップロードする必要があります。ファイルが大きくなることがあるので、送信時にユーザーが過度に待機する必要があります。どのように私は私がその機能を待つ必要はありません 関数を呼び出すにはどうしたらいいのですか? - ASP.NET

  • 行われた場合、私はいくつかの関数にファイル名のパラメータを送信
  • ファイル操作
    1. ようなものを作ることができ、私はのResponse.Redirectを使用したいですアップロードが完了する前に
  • +0

    あなたはそのために、AJAX非同期アップローダーコントロールを使用することができますが、点で最大リダイレクトカントアップロードは終了です。 –

    答えて

    9

    最も簡単な方法:ありこれを主張し、以下のいくつかのコメントがあるので、私はこれを書いた

    ThreadPool.QueueUserWorkItem(YourUploadMethod); 
    

    protected void Page_Load(object sender, EventArgs e) 
        { 
         ThreadPool.QueueUserWorkItem(YourUploadMethod); 
    
         Response.Redirect("http://google.com"); 
        } 
    
        public void YourUploadMethod(object state) 
        { 
         Thread.Sleep(7000); 
        }// breakpoint: I was redirected to google and then debugger stopped me here 
    
    +2

    メインスレッドがいったん終了すると、バックグラウンドスレッドも(完了しているかどうかにかかわらず)死にますので、このメソッドはasp.netでは機能しません。 – hofnarwillie

    +3

    私はResponse.End、Response.Redirect、またはServer.Transferはメインスレッドのみを中止すると思います。この質問を参照してください:http://stackoverflow.com/questions/1087777/is-response-end-considered-harmful –

    +0

    あなたは正しいです。私は訂正した。 :) – hofnarwillie

    1

    別のスレッドでメソッドを開始する必要があります。関数が戻るのを待つ必要がないため、コールバックは必要ありません。

    ThreadクラスとTaskクラスを参照してください。これを行うには

    関連する問題