C# 在没有确认的情况下将一位信息(= 布尔值)发送到另一个进程

C# Sending one bit of information (= boolean) to another process without acknowledgement

我目前有两个进程,我想将一个布尔值从一个进程传输到另一个进程,例如用户在某个对话框中按下了确定。但是我不能't/don不想等待其他进程接收到消息,我不知道其他进程是否或何时会收到消息。

先决条件:

目前的选项:

有些选项有效,但我认为大多数选项对于这种情况来说都有些矫枉过正。另一个问题是什么时候删除这条信息(什么时候清理文件或管道)。

也许有某种我可以写入的缓存?

你有什么想法吗?

PS:如果你post有技术请也提供一段代码

最后我们用了EventWaitHandle

进程 1

handle = new EventWaitHandle(false, EventResetMode.ManualReset, "KEYWORD");

if(secretHappened)
{
    handle.Set();
}

进程 2

using(var handle = EventWaitHandle.OpenExisting("KEYWORD")) //this always happens after Process1 so we can assume that the handle exists
{
    if(handle.WaitOne(0))
    {
        //Do your secret stuff
    }
}

到目前为止,它运行良好,唯一的问题是来自 Process1 的句柄不能被 GC 清理,并且很难确定何时处理句柄。我们将句柄的生命周期与 Process2 的生命周期相结合,一旦 Process2 不再存在,我们就会处理该句柄。这可能需要一段时间,但这就是我们所做的。由于我们不知道 Process2 中是否使用了句柄,因此我们不能将其用作清理的指标。