C# 抛出活动的异常字段中有什么内容

C# 抛出活动的异常字段中有什么内容,c#,workflow-foundation-4,C#,Workflow Foundation 4,有人能告诉我如何使用抛出活动的异常字段吗 我需要具体的例子。我抛出一个异常,因为我需要在调用代码中捕获它,然后运行一些清理代码 谢谢你的帮助 理查德 回应查克 我尝试了以下操作,工作流取消,但执行没有进入捕获。 知道为什么吗 public class AbortException : System.Exception { } class manager { ... try { workflowApp.Run(); } catch (Ab

有人能告诉我如何使用抛出活动的异常字段吗

我需要具体的例子。我抛出一个异常,因为我需要在调用代码中捕获它,然后运行一些清理代码

谢谢你的帮助

理查德

回应查克

我尝试了以下操作,工作流取消,但执行没有进入捕获。 知道为什么吗

public class AbortException : System.Exception
{
}

class manager
{
    ...

    try
    {
        workflowApp.Run();
    }
    catch (AbortException ea)
    {

    }
    catch (Exception ex)
    {

    }

    ...
}

使用异常属性:New AbortException

最简单的方法是创建一个扩展异常的类,并传递您想要的任何值,如:

public class MyError : Exception
{
   public MyError() : base(string.Empty) {}
   public MyError(Exception e) : base(e.Message) {}
   public int MyCustomValue { get; set; }
}
然后像这样使用它,将值5传递给catch处理程序

throw new MyError(){ MyCustomValue = 5 };
然后在你的捕获

try{}
catch(MyError ex)
{
    Console.Write(ex.MyCustomValue.ToString());
}

您仍在使用Workflow应用程序,对吗

因此,它在不同的线程上执行,因此在运行过程中使用C try/catch不会有任何帮助。正如我在其他问题中指出的,您需要向OnUnhandledException事件添加一个处理程序

WorkflowApplication wfApp = new WorkflowApplication(new YourWorkflow());
wfApp.OnUnhandledException = e => UnhandledExceptionAction.Abort;
wfApp.Run();

你在说什么?没有异常字段或属性。在wf4中,有一个名为Throw的活动具有异常字段。我看到有人提到过一次性行为,但我在工具箱中没有看到。哦,应该是:一次性行为是WF3而不是WF4。向我们展示引发AbortException的代码。谢谢,这非常有用。我已经按照你的建议做了,我可以看到工作流正在停止,但我的catch没有启动。你的workflowApp.Run是否运行;抛出一个新的异常;在它里面?如果没有,它就抓不住它。