在2个aspx页面中加载工作流程

时间:2011-07-12 17:11:35

标签: c# asp.net workflow workflow-foundation workflow-foundation-4

我正在开发一个ASP .net项目。我有2页。在第一页中,我有以下代码,用于创建新的工作流程

           var connStr = @"Data Source=M-PC\SQLEXPRESS;Initial Catalog=sella;Integrated Security=True;Pooling=False";
        AutoResetEvent syncEvent = new AutoResetEvent(false);
        var store = new SqlWorkflowInstanceStore(connStr);
        var app = new WorkflowApplication(new Activity1() { str = 4 });
        app.InstanceStore = store;

        app.Idle = delegate(WorkflowApplicationIdleEventArgs o)
        {

            syncEvent.Set();
        };

        app.Unloaded = (workflowApplicationEventArgs) =>
        {
            syncEvent.Set();
        };

        app.Run();
        syncEvent.WaitOne();

        string text = TextBox3.Text;
        app.ResumeBookmark("readText", text);
        syncEvent.WaitOne();
        app.Unload();
        syncEvent.WaitOne();
        Response.Redirect("WebForm1.aspx");

然后在下一页WebForm1中,我试图从实例存储重新加载相同的工作流,以便使用以下代码恢复另一个书签。

          var connStr = @"Data Source=M-PC\SQLEXPRESS;Initial Catalog=sella;Integrated Security=True;Pooling=False";
        AutoResetEvent syncEvent = new AutoResetEvent(false);
        var store = new SqlWorkflowInstanceStore(connStr);
        var app = new WorkflowApplication(new Activity1());
        app.InstanceStore = store;

        app.Idle = delegate(WorkflowApplicationIdleEventArgs o)
        {

            syncEvent.Set();
        };
        app.Completed = delegate(WorkflowApplicationCompletedEventArgs o)
        {
            syncEvent.Set();
        };

        id = new Guid(TextBox2.Text.ToString());
        app.Load(id);
        syncEvent.WaitOne();
        app.Run();
        syncEvent.WaitOne();

        string text = TextBox1.Text;
        app.ResumeBookmark("readText1", text);
        syncEvent.WaitOne();

但是当我执行工作流程时,没有任何反应。有没有人有任何想法如何处理它?感谢你的时间

1 个答案:

答案 0 :(得分:2)

看起来你会在第一个WaitOne上阻塞,因为一旦加载工作流程就赢了; t闲置直到开始

如果删除第一个等待,工作流程是否会运行?