Выполнять код, только если родительская транзакция завершена - PullRequest
0 голосов
/ 04 октября 2011

Приведенный ниже код выведет:

Event published
Command executed

Используя System.Transactions, как я могу включить EventPublisher в родительскую транзакцию, чтобы он выполнялся только при завершении CommandHandler.Поэтому вывод будет:

Command executed
Event published

Код:

class Program
    {
        static void Main(string[] args)
        {           
            var handler = new CommandHandler();
            handler.Execute();

            Console.ReadLine();
        }
    }

    public class CommandHandler
    {
        public void Execute()
        {
            var foo = new Foo();
            foo.DoSomething();

            Console.WriteLine("Command executed");
        }
    }

    public class EventPublisher
    {
        public void PublishEvent()
        {
            Console.WriteLine("Event published");
        }
    }
public class Foo
{
    public void DoSomething()
    {
        new EventPublisher().PublishEvent();
    }
}

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Я думаю, что вам нужно асинхронное выполнение кода рядом с транзакциями, которые охватывают весь код

0 голосов
/ 06 октября 2011

На самом деле решение заключалось в подключении к транзакции путем реализации IEnlistmentNotification .

...