В чем смысл TryCatch Activity в .NET 4.0, если не гарантируется выполнение Final? - PullRequest
4 голосов
/ 14 июля 2010

Сегодня я проектировал Activity и столкнулся с проблемой, из-за которой перебрасывание исключения в блоке Catch блока TryCatch не выполняет команду final, которая также связана с ним.После дальнейшего изучения я обнаружил следующее

http://connect.microsoft.com/wf/feedback/details/557601/try-catch-activity-never-executes-finally-if-exception-propagates

Может кто-нибудь объяснить мне, как используется блок finally в этом упражнении, если он не гарантированно выполняется?

Единственный случай, который я вижу, это если у вас есть вложенные блоки try.

1 Ответ

5 голосов
/ 15 июля 2010

Если вы перейдете по некоторым ссылкам с этой страницы подключения, вы попадете на на эту страницу , где вы можете найти ответ ... Суть:

Обычные функции WF, такие как

try
{
    Environment.FailFast("Game Over.");
}
finally
{
    Console.WriteLine("Not Called");
}

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

т.е. Workflowapplication.OnUnhandledException = UnhandledExceptionAction.Cancel

HTH

...