异步编程,对象A发起一个异步事件B,当B完成的时候A可能已经被关闭重新创建过了或者A已经被Destory了,当B来到的时候该应该怎么处理。A在主线程中,不能阻塞,所以不能等待。有很多个异步事件B,所以B不能删除再分配,应该复用。

解决方案 »

  1.   

    你这是多线程中的问题,不难解决。
    自己搜索CreateThread、Event,waitforsingleobject找例子看。
      

  2.   

    A创建和毁灭的时候,要在一个公共区间(如全局变量或Singleton)中注册或者注销自己的状态,如果B的到来是操作系统CALLBACK完成的,首先应该检测公共区间的A的状态,如果发现已经销毁应采取特殊方式处理..
    公共区间可以加锁,如果B已经到来并且正在处理,A这个时候不能注销.当然如果A也可对B的创建和返回进行计数,如果有未处理的B,最好禁止注销或者timeout,当然看你的主线程是否受得了.
      

  3.   

    楼主逻辑很清楚啊。
    你是认为B完成的时候?A不能被销毁还是可以被销毁?
    用WaitforMultipleObjects就可以应对多个B了
      

  4.   


    可以用hash表,提高效率
    另一种方法是使用引用计数