0

asp.net で、delegate.BeginInvoke を使用して IHttpAsyncHandler 内で同期データベース クエリを呼び出すと、データベースの読み取り中に asp.net ワーカー スレッドが解放されますか?

たとえば、この投稿: http://madskristensen.net/post/How-to-use-the-IHttpAsyncHandler-in-ASPNET.aspx

ServeContent 内に同期データベース呼び出しを配置し​​た場合、要求は引き続き非同期で行われますか?

4

2 に答える 2

1

いいえ。これは、そうであるとほのめかす誤解を招く記事です。の利点を得るには、IHttpAsyncHandler非同期に応答するものを呼び出す必要があります。たとえば、Web サービス、非同期データベース呼び出し ( などSqlCommand.BeginExecuteReader)、スリープ状態のスレッドで何かを起こすなどです。

TransmitFile(例の記事で使用されています) は非同期ではなく、同期です。また、他の同期呼び出しと同様にワーカー スレッドを使用します。

于 2009-05-07T03:22:06.847 に答える
0

BeginExecuteReader の mysql 実装を見ると、デリゲートを作成し、ExecuteReader を呼び出すだけの AsyncExecuteWrapper メソッドで BeginInvoke を呼び出すだけです。デリゲート内の同期呼び出しのみになるため、これは私には正しくないようです。したがって、IHttpAsyncHandler 内で mysql コネクタ BeginExecuteReader を使用しても機能しません。そうでしょうか?

ありがとう。

于 2009-05-07T11:35:12.450 に答える