2009-05-07 16 views
0

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

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

iはServeContent内部同期データベース呼び出しを入れた場合は、要求はまだ非同期に起こるのでしょうか?

答えて

1

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

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

0

BeginExecuteReaderのmysql実装を見ると、単にExecuteReaderを呼び出すAsyncExecuteWrapperメソッドでデリゲートを作成し、BeginInvokeを呼び出すだけです。これは、デリゲート内での同期呼び出しにすぎないので、私には当てはまりません。だから、たとえ私がIHttpAsyncHandler内のBeginExecuteReaderを使用しても、私は動作しません。それ?

ありがとうございました。

関連する問題