RT..........

解决方案 »

  1.   

    If the function succeeds, the return value is a handle to the event object. 
    If the named event object existed before the function call, the function returns a handle to the existing object and GetLastError returns ERROR_ALREADY_EXISTS. 
    If the function fails, the return value is NULL. 所有的函数都有执行失败的可能。特别是涉及到LPSECURITY_ATTRIBUTES lpEventAttributes,
    有可能因权限的问题引起失败。
      

  2.   

    会的,我以前就遇到过ERROR_NOT_ENOUGH_MEMORYGetLastError可以查看失败的原因
      

  3.   

    看MSDN,如果他说可能失败,就可能呗,如果他说不可能失败,那你都要怀疑一下
      

  4.   

    追问:我期望设计的程序尽可能地在更多的情况下稳定运行,是否意味着我需要承担因CreateEvent失败而引起的错误?例如在某个类的构造函数中我需要声明一个新的event,但如果CreateEvent运行失败,我将不得不对暂停或关闭整个程序做出选择,这十分令人困扰,因为这样一来,我需要在每次声明一个新类后都对其是否初始化成功进行查询,并作出初始化失败的相应处理,当设计的程序比较大且占用内存较多时,这一点毋庸置疑会大大拖延程序设计的速度。是否可以设计一个无论内存是否充足都能执行成功的CreateEvent?我暂且称呼它为CreateEventEx,当内存不足且它被调用时,它会一直等待直到有可用内存。
      

  5.   

    我期望一个保证程序不会出错的解决方案,这是我现在的需求。因为它既要使用大内存,亦要申请很多Event,并且流程复杂,我不可能在每次CreateEvent以后都对其失败的后果做出处理方案!
      

  6.   

    可以先申请/创建 足量的Event,再使用,
    这样就不存在使用过程中申请的问题
      

  7.   

    如9楼说的就是预先申请好内存,创建好对象,而不是用的时候再创建;如果初始化的时候出错退出,对程序影响要小,这是以空间换可靠性。不同函数对于错误的提示不一样,一般通过返回值或者用GetLastError来判断错误原因。
      

  8.   

    程序不能不出错。当然这不是BUG,只是由于一些硬件及操作系统的原因导致程序无法正常工作。
    程序所需要的就是保证错误处理,进行友好提示等。如果你要不出错,可以参考前面几位说的,所有资源预先准备好。否则我的程序就不跑了。
      

  9.   

    如果是匿名事件,只会在句柄用完的请况下才会失败吧。一般来说,这种情况不用考虑,句柄都用完了,肯定是哪儿有句柄泄露,不在源头上解决的话,即使你判断出了CreateEvent失败又怎样?