我得到以下情况
private volatile bool _inProgress = false;
public void DoSomethingStart()
{
if(_inProgress == false)
{
foo.BeginInvoke(null, null); // DoSomething
_inProgress = true;
}
}
[CatchAllExceptionsFromHere]
private void DoSomething()
{ }
这些方面到目前为止有效。所有异常都来自CatchAllExceptionsFromHere。但我想在方面的finally子句中设置“_inProgress = false” - 所以如果DoSomething已经完成“_inProgress”应该设置为false。由于属性不能占用任何对象 - 是否有解决方法?
谢谢迈克尔
答案 0 :(得分:2)
方面可以在声明上设置值来设置属性值,或者像构造函数一样。你想要的是一个OnMethodBoundaryAspect和OnExit方法(即使发生错误也会触发,所以它就像一个finally),你想要设置_inProgress的值。
但是,方面需要是一个实例方面,您需要导入_inProgress成员或只是引入它以便方面可以访问它。这取决于您的班级是否需要访问它。如果它有方面导入成员。阅读有关如何使用这些链接执行这些操作的信息