2010-10-07 3 views
9

во время работы с WF 4.0 Я заметил, что класс WorkflowApplication предоставляет свойства действия (Aborted, Complete и т. Д.) Вместо событий. Есть ли конкретная причина? Когда следует выбирать свойства действия вместо событий?Должен ли я раскрывать действия вместо событий?

Thank you

ответ

1

Я отправил электронное письмо одному члену команды WF, и, любезно, он ответил мне. Он сказал мне, что события и действия почти эквивалентны, но команда лучше чувствует себя с помощью API, используя действия.

6

Wow; Я вижу what you mean; это меня действительно удивляет.

Однако, если вы не можете придумать веские причины использовать свойства здесь (и я не могу), тогда придерживайтесь event s; они избегают множества проблем (случайная отмена подписки и неправильный вызов являются самыми большими).

Единственное, что я могу придумать, это то, что может быть им нужно это для сериализации, но я могу придумать другие способы взломать эту гайку. В качестве альтернативы, возможно, обычных событий не имеют смысла в сумасшедшем «свойстве зависимостей»/«присоединенном свойстве»/«маршрутизированном событии» мира WF.

+0

Спасибо ... Мне интересно, просто ли они легко сериализуются через Xaml .. или, возможно, их легче обработать разработчиком ... – fra

+0

@fra - последний, дизайнер winforms управлял регулярными событиями в течение многих лет ... предположительно, они только что бы сняли какой-то код оттуда? –

3

Редактировать: следующее неточно, см. Marc's comment ниже.

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

Я с Марком на этом, я удивлен, что они использовали Action свойства вместо стандартных событий.

+4

Ну, * если вы используете * + =/- =, свойство делегата будет вести себя (на поверхностном уровне) * тождественно * к событию. Так что немного сложно утверждать, что он разрешает только один обработчик. –

+1

@Marc: хорошая точка, и это еще больше поводов для привязки к событиям, поскольку один пользователь может использовать '+ =', а другой просто '=', который эффективно удаляет первый. –

Смежные вопросы