我正在开发一些在服务器端进行计算的软件。我曾尝试使用 BackgroundWorker,它工作得非常好,直到我尝试从胖客户端切换到 Web 服务。发生错误(由于我的同事告诉我,我已经预料到了)“BackgroundWorker 未标记为可序列化”。我的应用程序的目标是使用计算进度以及当前正在计算的记录的名称来更新客户端。如果需要,我可以发布一些代码,但在这种情况下,我怀疑它是否真的与问题相关。我试图实现的方案可以如下所示:
- 客户点击“准备”按钮
- 服务器接到电话
- 服务器发送数据
- 客户收到记录清单以确认
- 客户确认他们的选择(然后我设置后台工作人员并将其发送到服务器)
- 服务器获得调用(接收后台工作人员的引用,以及一次计算所需的所有记录)
通过循环遍历记录(每次计算大约需要 1-3 秒),像这样更新 BackgroundWorker 的状态:
worker.ReportProgress(i * 100 / ids.Length, "Currently counting: " + id + "..."); Calculate(ids[i]); worker.ReportProgress((i+1) * 100 / ids.Length, "Currently counting: " + id + "...");
有什么方法可以实现我也在网络服务上尝试的工作吗? 我认为这需要将 BackgroundWorker 欺骗到 Serializable 中,或者可能有其他方法可以将状态从服务器更新到客户端?
PS我没有从服务器发送很多数据(实际上我什至可以尝试只发送更少的数据,比如id),所以我认为这不会是过载的问题。