ManualResetEvent.WaitOne() を処理するときに奇妙なランダム NPE エラーが発生します。これが私のコードです。
ManualResetEvent オブジェクトを作成するメソッドがあり、それを依存関係パラメーター (manualResetEvent) の 1 つとして 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 でこのコードをデバッグすると、すべて正常に動作しますが、アプリケーションがリリース モードの場合にのみ、この例外が表示されます。
ここで何が間違っていますか?