Exemplo n.º 1
0
        private void WorkflowInstanceEndExecute(IAsyncResult ar)
        {
            WorkflowApplication workflowInstance = (WorkflowApplication)ar.AsyncState;

            try
            {
                workflowInstance.EndRun(ar);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Exemplo n.º 2
0
        public void TestWorkflowApplicationBeginRun()
        {
            var a = new System.Activities.Statements.Sequence()
            {
                Activities =
                {
                    new System.Activities.Statements.Delay()
                    {
                        Duration = TimeSpan.FromSeconds(3),
                    },

                    new Multiply()
                    {
                        X = 3,
                        Y = 7,
                    }
                },
            };

            int  mainThreadId    = Thread.CurrentThread.ManagedThreadId;
            bool completedCalled = false;

            var app = new WorkflowApplication(a)
            {
                Completed = delegate(WorkflowApplicationCompletedEventArgs e)
                {
                    completedCalled = true;
                },
            };


            var dt          = DateTime.Now;
            var asyncResult = app.BeginRun(null, null);
            var seconds     = (DateTime.Now - dt).TotalSeconds;

            System.Diagnostics.Debug.WriteLine($"It takes {seconds} seconds to init a BeginRun.");//The 1st WorkflowApplication may take over 1 second to run.
            app.EndRun(asyncResult);
            Assert.False(completedCalled);
        }
Exemplo n.º 3
0
        public void TestWorkflowApplicationBeginRunWithException()
        {
            var a = new System.Activities.Statements.Sequence()
            {
                Activities =
                {
                    new ThrowSomething()
                },
            };

            int  mainThreadId           = Thread.CurrentThread.ManagedThreadId;
            bool completedCalled        = false;
            bool exceptionHandlerCalled = false;

            var app = new WorkflowApplication(a)
            {
                Completed = delegate(WorkflowApplicationCompletedEventArgs e)
                {
                    completedCalled = true;
                },

                OnUnhandledException = args =>
                {
                    exceptionHandlerCalled = true;
                    return(UnhandledExceptionAction.Terminate);
                },
            };


            var dt          = DateTime.Now;
            var asyncResult = app.BeginRun(null, null);
            var seconds     = (DateTime.Now - dt).TotalSeconds;

            System.Diagnostics.Debug.WriteLine($"It takes {seconds} seconds to init a BeginRun.");//The 1st WorkflowApplication may take over 1 second to run.
            app.EndRun(asyncResult);
            Assert.False(completedCalled);
            Assert.False(exceptionHandlerCalled);
        }