我必须使用 WCF 服务启动一个长时间运行的进程,现在我不需要结果,但我可能很快就会需要它,所以假设这两种情况都执行一个函数的操作。
我尝试了不同的方法:
- 服务器是同步的,客户端使用另一个保持活动状态的进程进行同步调用
- 服务器是同步的,客户端使用可以关闭的同一进程进行异步调用
- 服务器是异步的,客户端使用相同的进程进行同步调用
如果客户端关闭与服务器的通信,服务器终止执行所以它没有完成任务?
避免这种情况的最佳方法是什么?
使用 Task 类在服务器中执行代码是一件好事吗?
解决方案可以使用 OperationContractAttribute 中的IsOneWay属性。
我不认为 WCF 是适合您的解决方案,在 WCF 中,一旦连接关闭,远程过程就会被视为失败并因此终止。
我建议您采用不同的方法,尝试实现客户端-服务器请求-响应类型的通信,这似乎更适合您正在描述的情况,但如果您要说明您使用服务器的场景会提供更好的帮助。