コード例 #1
0
            public async Task <object> RunWaitForEvent(OrchestrationContext context, OrchestrationEventReceiver eventReceiver)
            {
                var eventA = await eventReceiver.WaitForEventAsync <EventA>("EventA");

                var eventB = await eventReceiver.WaitForEventAsync <EventB>("EventB");

                var eventC = await eventReceiver.WaitForEventAsync <object>("EventC", TimeSpan.FromSeconds(1), null);

                var result = new
                {
                    EventA = eventA,
                    EventB = eventB,
                    EventC = eventC
                };

                return(result);
            }
コード例 #2
0
        public override async Task <string> Execute(OrchestrationContext context, string input)
        {
            var parameters = PrepareParameters(input, new Dictionary <Type, Func <object> >
            {
                [typeof(OrchestrationContext)]       = () => context,
                [typeof(OrchestrationEventReceiver)] = () => _eventReceiver = new OrchestrationEventReceiver(context),
                [typeof(OrchestrationGuidGenerator)] = () => new OrchestrationGuidGenerator(context.OrchestrationInstance.ExecutionId)
            });

            string serializedResult;

            try
            {
                var result = _methodInfo.Invoke(Instance, parameters);
                serializedResult = await SerializeResult(result);
            }
            catch (Exception e) when(!DUtils.IsFatal(e) && !DUtils.IsExecutionAborting(e))
            {
                var details = DUtils.SerializeCause(e, _dataConverter);

                throw new OrchestrationFailureException(e.Message, details);
            }
            return(serializedResult);
        }
コード例 #3
0
            public async Task <object> RunAddEventListener(OrchestrationContext context, OrchestrationEventReceiver eventReceiver)
            {
                List <EventA> eventsA = new List <EventA>();
                List <EventB> eventsB = new List <EventB>();

                using (eventReceiver.AddListener <EventA>("EventA", eventsA.Add))
                    using (eventReceiver.AddListener <EventB>("EventB", eventsB.Add))
                    {
                        await eventReceiver.WaitForEventAsync <object>("Stop");
                    }

                var result = new
                {
                    EventsA = eventsA,
                    EventsB = eventsB
                };

                return(result);
            }