Unless you use async COM on Win2000, no way to do this.

解决方案 »

  1.   

    回复人: acptvc(微软亚洲技术中心 VC技术支持) (2001-10-16 20:59:54)  得0分 
    感谢您使用微软产品。
    要回答这个问题有很多因素要考虑:
    1、客户端是什么平台。不同的平台提供不同的支持
    2、由于DCOM使用RPC,所以你要知道你的DCOM使用什么传输协议。通常UDP的时间短些,而TCP的时间长达2-3 hours;但UDP在win9x DCOM上不支持
    3、你的服务器不正常的时候DCOM 调用的进行情况:正在进行还没返回;还没开始调用等等因为这将影响timeout 的时间计算。以下我给出通常的大致解决办法:如果你的clients为win2k,那么你可以使用asynchronous call/call cancelling(CoCancelCall);
    在Win9x上你只能使用多线程来模仿:新建立一个线程来做dcom调用,然后主线程监控新建的线程,如果在给定的时间内不返回就认为timeout. --当然这种方法并不优雅,Whistler平台上将来会提供一个API来解决timeout的问题。在NT4上你可以让你的DCOM使用UDP等无连接的协议,它们的default timeout时间比较短。
    微软亚洲技术中心 VC技术支持本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款 (http://www.csdn.net/microsoft/terms.shtm)。