假設下面的代碼確定當前正在執行的方法
private AutoResetEvent m_MethodDone = new AutoResetEvent(false);
private void Method1()
{
// Do something
Method2();
}
private void Method2()
{
// All done
m_MethodDone.Set();
}
private void Method3()
{
}
private void Program()
{
Task t = New Task(() => { // Code In Question
m_MethodDone.WaitOne()
Method3();
});
t.Start();
// Do other things.
}
問題
有沒有一種方法來「捕獲」 CLR事件,無論是從我的線程中的事件或循環?
if(SomeRunTimeThing.LastMethodExecuted.Name == "Method2")
Method3();
爲什麼
我不希望有寫調用掛鉤到軟件的膽量,這是一個觀察到問題(HMM的想法來了...)(其實際上觀察用於自動化類型功能的UI調用模式)。
您已經有一個信號設置。你還需要什麼? –
好問題。我想鉤入更多的方法,所以我最終會有很多AutoResetEvents。另外,有一個系統觀察已經發生的事情,而不是每次發生什麼事情都會發生。也因爲我想知道這是否可能:) – Tom
您可能可以使用[來電者信息屬性](http://bartwullems.blogspot.ca/2012/02/c-5-caller-info- attributes.html),儘管你可能需要重新設計代碼。您也可以使用StackTrace類並抓取它的框架,雖然這在性能方面代價很高(我認爲),並且您需要小心編譯器優化,這可能會使您的方法代碼內聯。 –