工作流后台线程 - 如何等待

时间:2014-11-27 13:05:24

标签: c# multithreading unit-testing mstest workflow-foundation-4

我有一个持久的工作流程(由WorkflowApplication类运行),我需要单独测试runnung这个工作流程的正确性。

我正在从单元测试运行工作流程,所有运行正常,除了我在输出窗口中收到错误消息:

  

System.AppDomainUnloadedException:尝试访问已卸载的AppDomain。如果测试开始一个线程但没有停止它,就会发生这种情况。确保测试启动的所有线程在完成之前停止。

我想在持久化和卸载后测试工作流运行的结果,所以我使用这样的代码:

AutoResetEvent waitHandle = new AutoResetEvent(false);
WorkflowApplication wfApp = new WorkflowApplication(workflowTypeInstance, inputs);
wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{   
    waitHandle.Set();
};
// ....
wfApp.Run();
waitHandle.WaitOne();

问题是,工作流应用程序后台线程在卸载工作流后没有立即终止,但测试方法确实如此。这会在输出窗口中导致错误消息。

任何想法/方法/指出如何等待后台线程终止?

0 个答案:

没有答案