Поделиться через


TransactedReceiveScope Класс

Определение

Действие, область которого совпадает со временем существования транзакции, инициированное при получении сообщения. Транзакция может быть введена в рабочий процесс с помощью инициирующего сообщения, либо создана диспетчером при его получении.

public ref class TransactedReceiveScope sealed : System::Activities::NativeActivity
[System.Windows.Markup.ContentProperty("Body")]
public sealed class TransactedReceiveScope : System.Activities.NativeActivity
[<System.Windows.Markup.ContentProperty("Body")>]
type TransactedReceiveScope = class
    inherit NativeActivity
Public NotInheritable Class TransactedReceiveScope
Inherits NativeActivity
Наследование
TransactedReceiveScope
Атрибуты

Примеры

В следующем примере показано, как использовать класс TransactedReceiveScope в действии Sequence.

return new Sequence
{
    Activities = 
    {
        new WriteLine { Text = "Service workflow begins." },

        new System.ServiceModel.Activities.TransactedReceiveScope
        {
            Variables = { requestMessage, replyMessage },
            Request = receive,
            Body = new Sequence
            {
                Activities =
                {
                    new WriteLine { Text = new InArgument<string>("Server side: Receive complete.") },
                    
                    new WriteLine { Text = new InArgument<string>(new VisualBasicValue<string>() { ExpressionText = "\"Server side: Received = '\" + requestString.toString() + \"'\"" }) },

                    new PrintTransactionInfo(),

                    new Assign<string>
                    {
                        Value = new InArgument<string>("Server side: Sending reply."),
                        To = new OutArgument<string>(replyMessage)
                    },

                    new WriteLine { Text = new InArgument<string>("Server side: Begin reply.") },

                    new SendReply
                    {
                        Request = receive,
                        Content = SendContent.Create(new InArgument<string>(replyMessage)),                                    
                    },

                    new WriteLine { Text = new InArgument<string>("Server side: Reply sent.") },
                },
            },
        },

        new WriteLine { Text = "Server workflow ends." },
    },
};

Комментарии

Действие TransactedReceiveScope обеспечивает управление временем существования для передаваемой транзакции.

Предупреждение

Для инициирующего TransactedReceiveScope действия (который TransactedReceiveScope содержит Receive действие с CanCreateInstance значением true), транзакция создается до того, как среда выполнения начнет выполнение TransactedReceiveScope действия. Транзакция не является окружением на уровне действия рабочего процесса, но является окружением на базовых уровнях сохраняемости. Если при выполнении рабочего процесса действие Persist встретилось раньше действия TransactedReceiveScope, то среда выполнения пытается сохраниться ниже окружающей транзакции. Это вызывает блокировку до завершения транзакции. Поскольку выполнение рабочего процесса не достигло раздела Body, транзакция не может завершиться. Эта взаимоблокировка приводит к тому, что рабочий процесс перестает отвечать на запросы до истечения времени ожидания транзакции. Когда время ожидания транзакции истекает, созданный экземпляр прерывается.

Важно!

При использовании области TransactedReceiveScope рекомендуется размещать все операции получения в рабочем процессе в действиях, связанных с областью TransactedReceiveScope.

Важно!

Если используется область TransactedReceiveScope, а сообщения поступают в неверном порядке, рабочий процесс будет прерван при попытке доставки первого сообщения, пришедшего в неправильном порядке. Убедитесь, что рабочий процесс всегда находится в согласованном состоянии при освобождении рабочего процесса. Это позволит перезапустить рабочий процесс с прежней сохраненной точки в случае, если он был прерван.

Конструкторы

TransactedReceiveScope()

Инициализирует новый экземпляр класса TransactedReceiveScope.

Свойства

Body

Возвращает или задает объект Activity, представляющий текст действия TransactedReceiveScope.

CacheId

Возвращает идентификатор кэша, уникальный в пределах области определения рабочего процесса.

(Унаследовано от Activity)
CanInduceIdle

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

(Унаследовано от NativeActivity)
Constraints

Возвращает коллекцию действий Constraint, которые можно настроить для выполнения проверки the Activity.

(Унаследовано от Activity)
DisplayName

Возвращает или задает дополнительное понятное имя, используемое для отладки, проверки, обработки исключений и отслеживания.

(Унаследовано от Activity)
Id

Возвращает идентификатор, уникальный в пределах области определения рабочего процесса.

(Унаследовано от Activity)
Implementation

Логика выполнения действия.

(Унаследовано от NativeActivity)
ImplementationVersion

Получает или задает версию реализации действия.

(Унаследовано от NativeActivity)
Request

Возвращает или задает действие Receive, связанное с данным действием TransactedReceiveScope.

Variables

Возвращает коллекцию Variable, связанную с данным объектом TransactedReceiveScope.

Методы

Abort(NativeActivityAbortContext)

При реализации в производном классе выполняет действия в ответ на прерывание действия.

(Унаследовано от NativeActivity)
CacheMetadata(ActivityMetadata)

Не реализован. Вместо этого рекомендуется использовать метод CacheMetadata(NativeActivityMetadata).

(Унаследовано от NativeActivity)
CacheMetadata(NativeActivityMetadata)

Создает и проверяет описание аргументов, переменных, дочерних действий и делегатов действия.

(Унаследовано от NativeActivity)
Cancel(NativeActivityContext)

При реализации в производном классе выполняет логику, обеспечивающую изящное раннее завершение действия.

(Унаследовано от NativeActivity)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Execute(NativeActivityContext)

При реализации в производном классе запускает логику выполнения действия.

(Унаследовано от NativeActivity)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnCreateDynamicUpdateMap(NativeActivityUpdateMapMetadata, Activity)

Вызывает событие при создании сопоставления для динамического обновления.

(Унаследовано от NativeActivity)
OnCreateDynamicUpdateMap(UpdateMapMetadata, Activity)

Вызывает событие при создании сопоставления для динамического обновления.

(Унаследовано от NativeActivity)
ShouldSerializeDisplayName()

Указывает, необходима ли сериализация свойства DisplayName.

(Унаследовано от Activity)
ToString()

Возвращает значение типа String, которое содержит Id и DisplayName для Activity.

(Унаследовано от Activity)
UpdateInstance(NativeActivityUpdateContext)

Обновляет экземпляр NativeActivity.

(Унаследовано от NativeActivity)

Применяется к