0

だから私はloooooooongストアドプロシージャを持っています。実行には約 5 ~ 8 分かかります。sqlCommand オブジェクトを作成し、asp.net アプリケーションを介して実行するとします。スレッドは、コマンドの実行が完了するか、コマンドのタイムアウト期間が経過するまで待機します。

イベント 別のスレッド (thread_2) がこのタスクを実行する場合、thread_2 は待機します。コマンドの実行には約4〜7分かかるため、待機を避けたいです。

それを行う方法はありますか?

編集 :

間違っている場合は訂正してください。ただし、非同期バージョンを使用すると、thread_2 も使用されると思います。非同期メソッドは、スレッド コードを減らすための単なるラッパーです。【私の信念】

コマンドの実行が完了するまでスレッドが使用されないように、イベント駆動型のメカニズムが必要でした。

でも今は求めすぎてる気がする… え?

4

1 に答える 1

0

SQL 呼び出しを非同期にするために、すべてのコマンドの非同期バージョンがあります。つまり、SqlCommand.ExecuteNonQueryAsync です。

2 つ目は、ページのレンダリングを非同期にして、SQL コマンドの実行中にスレッドを使用しないようにすることです。MVC と WebForms の両方でそれを行うことができます (MVC の方が簡単です)。実行があなたが言った限りである場合、リクエストの競合が結果をレンダリングするのを待つのではなく、ページに何らかのポーリングメカニズムを実装したい場合があることに注意してください...

asyncコードによっては、 ( async/awaitを使用して)使いやすいコードでラップして、非同期 MVC アクションで使用できます。

WebForms/plain ASP.Net に固執する必要がある場合は、非同期ページを実装するためにさらに作業を行う必要がありますが、それでも可能です。

于 2013-03-16T06:52:41.417 に答える