我做了一个进程外组件。提供了一个传递数据给指定程序的接口。当第三方程序调用接口的时候,组件服务可能需要处理一段时间,这个时候第三方的程序又可能调用该接口,组件服务程序就出错了,我的组件服务端具体该怎么做呢?
   HMI
 |     |
 |     |
 \    /
  \  /
  COM
  /  \
 /    \
  第三方
上图中由HMI-COM-第三方-COM-HMI
问题就是 第三方-COM这一步。如果重复出现这一步,COM的处理就出错了,怎样建立一种机制,在COM没给HMI之前,就不接受第三方-COM的数据传递,而COM空闲之后就接收第三方来的数据并处理呢?谢谢!

解决方案 »

  1.   

    COM本身就是同步调用的,在接口方法里把所有要处理的事情处理完再返回,处理期间第三方程序会等待调用返回
      

  2.   

    To jameshooo:
    COM的处理结果是传递向了HMI,我在COM的处理中可能加了子线程通过子线程调用连接点传递数据给HMI。此时可能已经向第三方程序返回了。
      

  3.   

    都可行。关键是组件和HMI之间要协调速度,组件不能只顾着把数据丢给HMI就马上返回,必须等到HMI处理完毕能留出空闲的资源才让组件返回。我不知道HMI是什么东东,但是既然属于多线程处理,同步锁是必须要有的。