ファイルのダウンロードまたはアップロード (WebClient.DownloadFileAsync|UploadFileAsync または HttpWebRequest による) を続行し、同時に SignalR-hub メソッドを呼び出すと、いくつかの問題が発生します。
ファイルの読み込みが完了するまで、SignalR の呼び出しは停止されました。それは次のように思われます: すべての signalr 呼び出しがエンキューされます。キューに入れられたすべての呼び出しは、さらに実行されます (ファイルのロード後)。
私のコードフラグメント:
hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading started ", 0);
DownloadFileByKey(fileKey, (progressPercentage, bytesSent) => { hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading in progress", progressPercentage); });
hubProxy.Invoke("TraceDocumentUploadingRequest", callerId, fileName, "File loading finished", 100);
2 番目の "TraceDocumentUploadingRequest" ハブ メソッド呼び出し (ファイル ロード ハンドラー内) は、ファイルのダウンロード完了後にハブで実行されます。
ファイル ロード ハンドラーは、現在のスレッドまたは別のスレッド (DownloadFileByKey メソッドの実現に関連) の両方で実行されます。結果は同じです。
この動作を回避し、適切なタイミングでハブ メソッドの呼び出しを強制するにはどうすればよいですか?