在处理 ManualResetEvent.WaitOne() 时,我遇到了一个奇怪的随机 NPE 错误。这是我的代码。
我有一个方法可以创建 ManualResetEvent 对象,然后将其作为依赖参数 (manualResetEvent) 之一传递给 Windows Workflow Foundation (WWF) 工作流实例,然后我进入 manualResetEvent.WaitOne() API。
ManualResetEvent manResetEvt = new ManualResetEvent(false);
Dictionary<String, Object> wfArgs = new Dictionary<string, object>();
wfArgs["manualResetEvent"] = manResetEvt;
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(MyWWFProcess), wfArgs);
instance.Start();
manResetEvt.WaitOne();
当工作在 WWF 内完成时,我只需调用 manualResetEvent.set()。
if (this.manualResetEvent != null)
{
this.manualResetEvent.Set();
}
所有这些都编译得很好,并且在运行时,我看到流程按预期进入了 WWF,并且调用者也确实在等待 WaitOne() 调用。
WWF 调用 manualResetEvent.Set() 通知调用者的那一刻,我看到调用者不是 WWF 的 NPE 异常。
System.NullReferenceException:对象引用未设置为对象的实例。
我真的不知道这个异常是从哪里来的。当我在 VS IDE 中调试此代码时,一切正常,但只有当应用程序处于发布模式时,我才会看到此异常。
我在这里做错了什么?