gpt4 book ai didi

c# - ManualResetEvent.Set() 什么时候可以返回 false?

转载 作者:太空狗 更新时间:2023-10-29 18:11:23 25 4
gpt4 key购买 nike

根据 MSDN 文档,ManualResetEvent(或任何 EventWaitHandle)上的 Set() 和 Reset() 返回一个 bool 值指示器,无论操作是否成功。

这个调用在什么情况下会返回false,如果返回false我该怎么办?

最佳答案

我不确定如何回答这个问题,并查看了很多 MSDN 示例,Set 返回值被忽略,因此它一定不重要或不可能发生。

但这还不够好。我启动了我的 VM,然后打开 Reflector 查看代码。 ManualResetEvent 没有 Set 但它继承自 EventWaitHandle 。这是代码:

public bool Set()
{
bool flag = Win32Native.SetEvent(base.safeWaitHandle);
if (!flag)
{
__Error.WinIOError();
}
return flag;
}

从 Kernel32 导入 SetEvent 的地方:

[DllImport("kernel32.dll", SetLastError=true)]
internal static extern bool SetEvent(SafeWaitHandle handle);

WinIOError() 调用只是调用我们并不关心的 GetLastWin32Error。基本上,这意味着对于返回 false 的调用,Win32 native 代码中必须发生一些非常错误的事情。

将此信息与官方 MSDN 文档中托管的代码忽略返回值的事实放在一起(为什么不呢?如果内核无论如何都失败了你打算做什么?)如果你想清理你的,你可以放心地自己忽略它如果您特别迂腐,请稍微整理一下逻辑或获取它并记录下来。

关于c# - ManualResetEvent.Set() 什么时候可以返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4092756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com