2012-03-04 43 views
1

最後行動我有以下情況上PostSharp異常方面

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。由於屬性不能使用任何對象 - 是否有解決方法?

感謝邁克爾

回答

2

方面可以採取對申報設置屬性值或就像一個構造函數的值。你想要的是一個OnMethodBoundaryAspect和OnExit方法(即使發生錯誤也會觸發,所以它就像一個finally),你需要設置_inProgress的值。

但是,該方面需要是一個實例方面,您需要導入_inProgress成員或只是引入它,以便方面有權訪問它。這取決於你的班級是否需要訪問它。如果它有方面導入成員。閱讀上如何做這些事情與這些鏈接

+0

非常感謝 - 這就是我一直在尋找 – damike 2012-03-05 16:20:49