我们正在尝试从两个进程中同步一个取消请求,即它们之间的通信是使用管道和远程处理完成的。
我们希望如果一个人具有取消(使用取消令牌)的调用方法(在第一个进程中),我们还希望取消在第二个进程中运行的方法。
由于waitHandle可以全局设置,因此可以从其他进程访问它,我想我应该使用它,像这样:
// 1st process calling function:
var eventId = @"Global\" + Guid.NewGuid().ToString().ToUpperInvariant();
using (var waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, eventId, out _, eventSecurity))
{
cancellationToken.Register(() => CancelWork(eventId));
//remoting job here
}
private void CancelWork(string eventId)
{
try
{
using (var handle = EventWaitHandle.OpenExisting(eventId))
{
handle.Set();
}
}
catch (Exception e)
{
Log.Logger.Warn(e, $"Unable to signal event [{eventId}]");
}
}
是否可以创建一个取消令牌,该令牌将在MRE被选中时取消?