我认为这个问题比使用COM组件更通用。我有一个用C#编写的.NET客户端和用纯Win32 API编写的COM组件。客户端使用此组件执行某些操作。如何在客户端知道该组件是否能够完成其工作? 我认为它可能是套接字/管道,组件写入结果,客户端读取它向用户显示进度。这样做的最佳方式是什么?
答案 0 :(得分:2)
使用COM,您无法控制流经套接字的数据。您有一个类似RPC的接口,即您的客户端调用服务器上的方法,该方法返回结果。没有关于流式传输结果的概念。
为了做你提到的事情,你需要设计客户端实现的接口,例如,在启动作业时,服务器返回一个标识符并异步执行作业。然后,客户端可以定期轮询服务器,将标识符作为参数,并向服务器询问实际进度。
另一种方法是在服务器上实现一个连接点,它本质上是一个回调机制,以便服务器可以通知客户端它的进度。有关详细信息,请参阅CodeProject 1或CodeProject 2。