サーバーパスにいくつかのファイルを生成するボタンが付いたWebページがあります。 (5分から20分程度かかります)。私はユーザーがブラウザを閉じた後でも実行を続ける非同期タスクを作成したい。 asp.net 4とC#でこれを行うことは可能ですか?asp.netでメソッドを非同期で実行する
答えて
あなたがしたいこと、またはあなたが何かをする必要がないことを私は理解していませんでした。
要求が送信された後、ユーザーのブラウザが閉じられているかどうかにかかわらず要求プロセスは続行されます。あなたは長時間実行されるタスク
を下に見ていたスレッドを作成する必要が
ニース。ユーザーがページ上で他のアクションを実行したい場合は、ページを待機させない方法です。 – user194076
@ user194076 ajaxリクエスト。 google _ "ajax tutorial" _あなたに新しいことならば。 – gdoron
...ステートレスなWebアプリケーションのもの
素晴らしい自然を行う必要はありません。
http://kiranpatils.wordpress.com/2010/01/01/performing-a-long-running-task-with-asp-net/
とにかくそれは(あなたがアプリプールをリサイクルしたり、Webサーバーを再起動するまで)、ユーザーがブラウザを閉じても実行し続けます今まであなたがサーバー上で起動します。
この記事は9歳です。現在のASP.NET開発標準には該当しません。 –
asp.netの動作方法は変わりません –
いいえ、開発アドバイスは悪いです。それ以来多くのことが学んできました。 –
スレッドプールを使用した新しいスレッドの作成は、暴走タスクを作成する最も簡単な方法です。
長いタスクの実行中にプロセスが生き続けることは保証されないので、部分的な完了と手動の再起動を処理する準備ができていることに注意してください。私。設定変更によるAppPollリサイクル。
最も簡単な方法は、あなたのタスクをThreadPoolに置くことです。 Webページのレンダリングが完了した後でも、スレッドプールスレッドは存続します。コードは次のようになります。
/* Beginning Method */
object someData = new object();
ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessAsync), someData);
/* Ending Method */
static void ProcessAsync(Object stateInfo)
{
string dataToString = stateInfo.ToString();
}
実際はそうしないことをお勧めします。代わりに、処理を非同期的に実行するサービス(Windowsサービスなど)を作成することをお勧めします。 Webアプリケーションでは、プロセスを開始するメソッドと、処理が完了したかどうかを判断するためにサービスをポーリングする別のメソッドを作成します。
これにはいくつかの理由がありますが、最も大きな点の1つは、Webサーバーのデフォルトおよび推奨の構成によってサーバーが長時間実行される要求を強制終了できることです。
これをどうやって行うの?または有効なチュートリアルへのリンク。 – user194076
Webサービスから公開するメソッドを含むWebソリューションのインターフェイスを作成します。チュートリアル[リンク](http://www.codeproject.com/Articles/3990/Simple-Windows-Service-Sample)にここをクリックして、インターフェイスを実装してWebサービスを作成します。 WindowsサービスにパススルーするWebアプリケーションに[web]サービスエンドポイントを追加します。私はたくさんの点で光沢があります。これには相当量の作業が必要ですが、そこで行う方法についてのチュートリアルがたくさんあります。これが初めての学習方法です。 –
asp.netアプリケーションでスレッドプールを制御しません。要求が開始された同じスレッドで完了することを保証することさえできません。スレッドを作成すると、Webサーバーが使用するのと同じアプリケーションプールが使用され、すべての要求スレッドを使い切って、Webサーバーを利用できずに要求を処理できます。
Webアプリケーション内から呼び出すことができるWCFサービスをホストするWindowsサービスを実装する必要があります。サービスでは、スレッドを実行して長時間実行されるプロセスを処理できます。そのプロセスの最後に、ユーザーがファイルの処理が完了したかどうかを確認するためにステータスフラグ(たとえば、処理から完了)を更新できます。
Windowsサービスを実装するためにTopshelfを使用することをお勧めします。
- 1. 非同期にメソッドを実行する
- 2. Asp.Net MVCコントローラで非同期メソッドを実行するための最良のソリューション?
- 3. ブロードキャストレシーバのOnRecieve()メソッドで非同期タスクを実行する
- 4. BitmapFrameを非同期で非同期メソッドで作成する
- 5. Python 2.6でコールバックでメソッドを非同期に実行
- 6. 同期メソッドを非同期で実行し、結果を待つ方法
- 7. 非同期メソッドの非同期メソッド
- 8. HttpClient非同期メソッドが新しいスレッドで実行される
- 9. 非同期ASP.Net MVCコントローラのアクションでTask.Run()を実行
- 10. 非同期メソッドを実行するタスクを開始するC#
- 11. 非同期メソッドは別のスレッドで実行しますか?
- 12. Swift:非同期メソッドを同期メソッドでラップする方法は?
- 13. 同時実行:非同期のメソッドで変数を変更する
- 14. 非同期非同期のJavaScriptでの実行順序
- 15. 抽象メソッドPythonでの非同期と同期の実装
- 16. ASP.NET Entity Framework 6ストアドプロシージャを非同期に実行する
- 17. RxJavaで非同期メソッドを同期する方法は? RxJavaの非同期ウォーターフォール
- 18. 非同期メソッドを同期する
- 19. asp.netの下で永続的なプロセスを非同期で実行するには?
- 20. プロセスを実行するC#クラスの非同期メソッド
- 21. UWP - 実行中の非同期メソッドからListViewをリフレッシュする
- 22. ASP.NET Webフォーム - 非同期的にWCF非同期メソッドを呼び出す方法
- 23. クイックキャンペーンで非同期ジョブを実行
- 24. 同期コードの非同期実行
- 25. 同期と非同期AJAXを同時に実行する
- 26. 非同期メソッド非同期に新
- 27. 非同期ループ内の非同期メソッド
- 28. 非同期メソッド(Web呼び出しを行う)を非同期にラップする
- 29. AJAX(JavaScript)内の同期関数を非同期で実行
- 30. Qtでの非同期アプリケーションの実行
その他の質問 - http://stackoverflow.com/search?q=aspnet + long + running + task –
これはhttp://stackoverflow.com/questions/57845/backgroundworker-thread-in-asp-netと同じ質問ですか? – PinnyM