【发布时间】:2018-11-28 19:29:18
【问题描述】:
我正在将 C# .NET Framework 项目转换为 .NET Core。它编译时没有错误或警告,并且在 Windows 上运行良好,但是当我在 CentOS 7 上尝试它时,当我尝试创建 EventWaitHandle 的实例时得到一个 System.PlatformNotSupportedException。代码如下:
this.eventHandle = new EventWaitHandle(initialState, resetMode, name);
显然 .NET Core 2.1 支持此类,因为这里有 MS 文档:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.eventwaithandle.-ctor?view=netcore-2.1
这是否像错误描述的那样简单,并且不支持跨多个平台的此类?如果是这样,为什么它包含在 .NET Core 中?这里还能有其他什么东西在起作用吗?
如果根本不支持,是否有人可以建议在 .NET Core 2.1 中完全支持的替代类?
谢谢。
【问题讨论】:
-
你在使用任何 NuGet 包吗?
-
添加更多信息...我正在使用它进行跨进程同步。
-
@Moffen,我目前没有使用任何 NuGet 包。
-
显而易见的方法可能是创建一个拉取请求,以便 events are implemented in a POSIX or at least Linux way,然后 .NET Core 2.2 将获得支持......显然,并非完全微不足道。根据您的场景(即没有太多事件,没有太多调用),您可以通过轮询文件来实现一些穷人的同步机制。
-
嘿@mojoker 你有没有找到解决方案?好像还没修好。