- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有两个 Windows 应用程序,一个是创建 EventWaitHandle 并等待它的 Windows 服务。第二个应用程序是一个 Windows gui,它通过调用 EventWaitHandle.OpenExisting() 打开它并尝试设置事件。但我在 OpenExisting 中遇到异常。异常是“拒绝访问路径”。
windows 服务代码
EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset, "MyEventName");
wh.WaitOne();
Windows 界面代码
try
{
EventWaitHandle wh = EventWaitHandle.OpenExisting("MyEventName");
wh.Set();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我用两个示例控制台应用程序尝试了相同的代码,它工作正常。
最佳答案
您需要使用EventWaitHandle constructor的版本这需要 EventWaitHandleSecurity实例。例如,以下代码应该可以工作(未经测试,但希望能让您入门):
// create a rule that allows anybody in the "Users" group to synchronise with us
var users = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
var rule = new EventWaitHandleAccessRule(users, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify,
AccessControlType.Allow);
var security = new EventWaitHandleSecurity();
security.AddAccessRule(rule);
bool created;
var wh = new EventWaitHandle(false, EventResetMode.AutoReset, "MyEventName", out created, security);
...
此外,如果您在 Vista 或更高版本上运行,则需要在全局命名空间中创建事件(即,在名称前加上“Global\”前缀)。如果您使用“快速用户切换”功能,则还必须在 Windows XP 上执行此操作。
关于c# - 创建一个跨进程的 EventWaitHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590334/
我试图理解我在网上找到的这段代码: private EventWaitHandle wh = new AutoResetEvent(); private void WorkerThread() {
我有一个 C# 程序可以像这样打开一个 EventWaitHandle 以被 Windows 服务触发。 EventWaitHandle sampleEventHandle = new EventWa
注意:我受限于 .NET 3.5,所以我不能使用 ManualResetEventSlim。 我必须处理Spurious wakeups吗?当做这样的事情时: var waitHandle = new
我有两个 Windows 应用程序,一个是创建 EventWaitHandle 并等待它的 Windows 服务。第二个应用程序是一个 Windows gui,它通过调用 EventWaitHandl
EventWaitHandle 可以跨进程使用。并且自动和手动重置事件仅在单个进程内。你能确认一下吗? 文档说自动/手动是本地的,它们不采用名称参数。所以我认为它们仅适用于流程内。对了,他们能跨app
我正在编写一个监听串行端口的程序。我已经有代码利用 VCP 驱动程序(虚拟 COM 端口)打开串行连接,然后为接收到的任何数据添加事件处理程序。该代码大致如下所示: public void OpenP
在进程 A 中,我需要从进程 B 接收事件。我决定使用 EventWaitHandle。在这两个过程中,我都写了这段代码: var evhandle = new EventWaitHandle(fal
有没有办法知道调用了哪个EventWaitHandle。 我有两个带有 2 个不同系统范围事件名称的自定义类。 我有它们的原因是为了区分触发哪个函数。 我现在的问题是如何区分触发了哪个事件? Even
考虑以下 MyServer 端的代码片段 public void CreateEvent() { var serverReadyEvent = new EventWaitHandle(false
从 albahari atricle 学习多线程.在下面的示例中我需要锁 _locker 吗?我想不会,因为 _message 受 EventWaitHandle 保护。我说得对吗? class Tw
我需要更改当前代码,以便在调用 EventWaitHandle.WaitOne 时不阻塞当前线程。问题是我正在等待系统范围的事件。我还没有找到任何合适的替代品。 代码: EventWaitHandle
这个网站的新手,所以如果我没有以可接受的方式发帖请告诉我。 我经常按照下面的示例编写代码(为清楚起见,省略了 Dispose 之类的内容。)。我的问题是,是否需要如图所示的 volatile ?或者
我想找到一种方法将这两行结合起来: cancellationToken.WaitHandle.WaitOne() |> ignore waitHandle.WaitOne() |> ignore 无论
我只是好奇,系统范围的 EventWaitHandle 的命名是否有任何限制?我想使用 URL 作为一个名称,但它可能有大量奇怪的字符,我不希望它默默地失败或其他类似的情况,所以只需检查这里是否有任何
我最近在 C# 中看到了 EventWaitHandle 的强大行为,并决定在姊妹应用程序中移动一些功能来实现同样的功能。唯一的问题是姊妹应用是用 C 语言编写的。 没什么大不了的,我正在使用 pth
我想要 EventWaitHandle 对象(例如 ManualResetEvent),它只能从一个地方设置/重置,但可以从多个地方等待(使用 WaitOne())。换句话说,我希望只有一个类可以设置
我猜这是一种代码审查,但这是我对生产者/消费者模式的实现。我想知道的是,在 ReceivingThread() 或 SendingThread() 方法中的 while 循环是否会停止执行。请注意,E
我有一个如下所示的任务类,一个任务只有在其依赖任务完成后才能开始运行。 class MyTask { List dependentTasks; public TaskStatus St
class Process { static void Main(string[] args) { int threads = 0; int proce
我有 3 个线程,两个“ worker ”和一个“经理”。 “工作人员”线程在 EventWaitHandle 上等待,“经理”线程将在增加其计数器后向 EventWaitHandle 发出信号。这些
我是一名优秀的程序员,十分优秀!