我在玩搗亂任務內部狀態機狀態的想法,但我很難找到一種方法來實際訪問我內部的狀態機參考任務方法。獲取實際參考任務狀態機
class Test
{
async Task IndexAsync()
{
var nottheactualtype = GetType(); //This references the "Test" class, but this operation is actually located in the nested state machine class named "IndexAsync", in the method "MoveNext()".
var actualcalledmethod = new StackTrace().GetFrame(0).GetMethod(); //This shows the actual method currently being run: IndexAsync.MoveNext().
//But how do I get the reference to my current IndexAsync class?
}
}
我該如何訪問當前運行的生成狀態機的引用?
是否必須是方法本身?我有很多代碼在https://github.com/jskeet/DemoCode/tree/master/Abusing%20CSharp/Code/FunWithAwaiters做這種事情可能會幫助你,但它並不傾向於獲得狀態機器*內*異步方法。 –
我相信如此。在異步方法中的某個位置,我想查看狀態機中的哪個狀態正在運行。除此之外還有更多,但其實質是我想訪問當前正在運行的狀態機的成員。我可以通過反射訪問成員,並且可以訪問生成的類的類型。但我似乎無法找到訪問實際引用的方法。 – Micael
好吧,我想我已經想出了一些東西,但我需要嘗試一下...... –