Рабочий процесс Windows не прерывается после сбоя транзакции
Я немного новичок в фундаменте Windows Workflow, так что он может быть очень простым, но я застрял с ним. У меня очень простой последовательный рабочий процесс, и есть несколько действий кода, которые находятся внутри действия области транзакции.
Я запускаю свой рабочий процесс из консольного приложения, имеющего следующий код:
Activity workflow = new Process();
var inputArgument = new Dictionary<string, object>();
inputArgument["Argument 1"] = 1234567;
inputArgument["Argument 2"] = 1234567;
inputArgument["Argument 3"] = "GUID";
inputArgument["Aggument 4"] = @"\\filepath\";
var syncEvent = new AutoResetEvent(false);
var workflowApp = new WorkflowApplication(workflow, inputArgument);
workflowApp.OnUnhandledException =
delegate (WorkflowApplicationUnhandledExceptionEventArgs e)
{
return UnhandledExceptionAction.Terminate;
};
workflowApp.Completed +=
delegate (WorkflowApplicationCompletedEventArgs e)
{
syncEvent.Set();
};
workflowApp.Run();
syncEvent.WaitOne();
Если я не добавляю активность области транзакции, мой рабочий процесс работает нормально, и в случае исключения экземпляр рабочего процесса завершается, и мое консольное приложение также закрывается.
Тем не менее, когда я добавляю действие области действия и если какое-либо действие завершается неудачей в области действия транзакции, мой экземпляр рабочего процесса продолжает работать так же, как и моя консоль. Кто-нибудь может подсказать мне, как прекратить дело?
Я не обрабатываю какие-либо исключения в своем рабочем процессе и хочу, чтобы они были такими, чтобы я мог регистрировать детали исключения.
1 ответ
Если вы идете в свойствах на TransactionScope
в рабочем процессе есть свойство, которое установлено true
по умолчанию называется AbortInstanceOnTransactionFailure
, Установите это в false
, Затем он должен вести себя так, как вы ожидаете.
Когда этот параметр включен, экземпляр рабочего процесса прерывается, но не завершается.