Вкладывание действия TransactionScope

Данный раздел относится к версии Windows Workflow Foundation 4.

Этот образец состоит из четырех сценариев, выполнение которых демонстрирует вкладывание экземпляров TransactionScope. В первом сценарии показана вложенность стороннего действия, о разработке которого автору ничего не известно. Второй и третий сценарии показывают, как соблюдаются времена ожиданий, а последний сценарий показывает настройку AbortInstanceOnTransactionFailure.

Вложенность действия TransactionScopeActivity

Рабочий процесс для первого сценария состоит из двух последовательных действий WriteLine, за которыми следует TransactionScope. Текст диапазона TransactionScope представляет собой последовательность еще двух действий WriteLine, пользовательского действия, которое выводит локальный идентификатор транзакции, и стороннего действия. Стороннее действие TransactionScopeTest содержит объект TransactionScope, хотя автору рабочего процесса об этом не может быть известно. В этом сценарии показывается, что действия TransactionScope могут быть вложенными.

Время ожидания

Рабочий процесс для второго сценария практически совпадает с рабочим процессом для первого сценария. Класс TransactionScopeTest заменен классом TransactionScope. У текста TransactionScope задержка составляет пять секунд, а время ожидания для транзакции равно двум секундам. Время ожидания для внешней области TransactionScope составляет 10 секунд. Обратите внимание, что учитывается наименьшее время ожидания, заданное для области, и время ожидания транзакции заканчивается.

Рабочий процесс для третьего сценария очень похож на второй сценарий. Действие задержки перемещено из текста внутренней TransactionScope и поставлено сразу после него в последовательность, которая является телом внешнего класса. TransactionScope. Время ожидания транзакции по-прежнему истекает, но это происходит потому, что двухсекундное время ожидания внутреннего класса TransactionScope уже не применяется. Время ожидания транзакции заканчивается через 10 секунд, когда время ожидания внешнего класса TransactionScope уже превышено.

Прерывание по сбою транзакции

Этот рабочий процесс похож на третий сценарий, за исключением того, что время ожидания заменено свойством AbortInstanceOnTransactionFailure. Обратите внимание, что флаги всех внутренних дочерних элементов, если они заданы, должны соответствовать внешней области TransactionScope. В этом сценарии такого соответствия нет, поэтому при открытии рабочего процесса возникает исключение.

Выполнение образца

  1. Откройте решение NestedTransactionScopeActivitySample.sln в среде Visual Studio 2010.

  2. Чтобы построить решение, нажмите клавишу F6 или выберите команду Построить решение в меню Построение.

  3. После успешного построения нажмите клавишу F5 или выберите команду Начать отладку в меню Отладка. Также можно нажать клавиши CTRL+F5 или выбрать команду Запуск без отладки в меню Отладка, чтобы запустить выполнение без отладки.

Dd807498.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WF\Basic\Transactions\NestedTransactionScope