SL4アプリケーションでは、HttpWebRequestを使用して同じ時間(+ 3秒)で多くのリクエストをサーバーに実行します。 (サーバーが304を返さ - 変更されません)その結果、私は応答の同じカウントを受け取り、すべてのresponsiesが受信されSilverlight:StreamReaderはブラウザのキャッシュではゆっくりと動作します
HttpWebRequest request = (HttpWebRequest) asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(asynchronousResult)
using (var stream = new StreamReader(response.GetResponseStream()))
{
var str = stream.ReadToEnd();
var doc = XDocument.Parse(str);
}
- ストリームプロセスを開始各応答プログラムについて
- (なぜならasynchronusResultの新しいスレッドを作成し、 )。
- ストリームからデータを取得しようとすると、stream.ReadToEnd()メソッドが機能するのに多くの時間がかかります。私は今ReadToEnd()の内部に何もしていませんが、ストリームの読み取りが1つのスレッドで実行されるか、ロックが発生しているようです。何か案は?? なぜそれが起こるのですか?すべてが独立したスレッドでカプセル化され、このメソッドを除いて速く動作します。
I/Oは、常にプログラムの遅い部分です。複数のスレッドを使用しても、TCP/IPドライバスタックとネットワークカードは1つしかありません。キャッシュからのものであればディスク。そして、はい、共有リソースへのアクセスをシリアライズするOSコードに組み込まれたロックがあります。 –