在继续下载或上传文件(WebClient.DownloadFileAsync|UploadFileAsync 或通过 HttpWebRequest)并同时调用 SignalR-hub 方法时,我遇到了一些问题:
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);
文件下载完成后,将在集线器上执行第二个“TraceDocumentUploadingRequest”集线器方法调用(在文件加载处理程序中)。
文件加载处理程序在当前线程或另一个线程中执行(与 DownloadFileByKey 方法实现相关) - 结果是相同的。
我怎样才能避免这种行为并在正确的时间强制调用集线器方法?