7

在继续下载或上传文件(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 方法实现相关) - 结果是相同的。

我怎样才能避免这种行为并在正确的时间强制调用集线器方法?

4

1 回答 1

0

总结 David Fowl 的评论,这个问题是 SignalR 版本 1.1.3 中的一个错误,但在以后的版本中得到了修复。特别是 2.0.0版

于 2015-07-24T13:36:17.683 回答