我有一个持久的工作流程(由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();
问题是,工作流应用程序后台线程在卸载工作流后没有立即终止,但测试方法确实如此。这会在输出窗口中导致错误消息。
任何想法/方法/指出如何等待后台线程终止?