例如,在观察窗口中,我看到:
名称:任务
值:Id = 11,Status = WaitingToRun,Method =&#34; Void<
RetreiveFromCache>
b__0()&#34;
输入:System.Threading.Tasks.Task
所以task
变量属于Type Task,我想访问调试器打印的相同值,特别是我对Method
值感兴趣( RetreiveFromCache )
但是在task
变量上我只能访问.Id,.Status等...但不是.Method
Method
值来自何处?
调试器如何推断&#34; Method
值?
答案 0 :(得分:0)
Yo可以覆盖ToString()方法。这是简单的方法 但是你要找的是这些课程:
有关详细信息,请参阅https://msdn.microsoft.com/es-es/library/ms228992(v=vs.110).aspx
答案 1 :(得分:0)
无法访问Action
对象的Task
变量。您可以做的是创建自己的类,扩展Task
的功能,同时公开Action(包含有关要运行的方法的信息)。
一个简单的例子:
public class CustomTask : Task
{
private Action m_action;
public Action Action
{
get { return m_action; }
}
public CustomTask(Action action) : base(action)
{
m_action = action;
}
}
然后在您的代码中,您可以像这样使用它:
CustomTask ct = new CustomTask(MyMethod);
Console.WriteLine("ID: {0}, Method: {1}, Status: {2}", ct.Id, ct.Action.Method, ct.Status);
//Prints: "ID: 1, Method: Void MyMethod(), Status: Created"
ct.Start();
Console.WriteLine("ID: {0}, Method: {1}, Status: {2}", ct.Id, ct.Action.Method, ct.Status);
//Prints: "ID: 1, Method: Void MyMethod(), Status: WaitingToRun"
ct.Wait();
Console.WriteLine("ID: {0}, Method: {1}, Status: {2}", ct.Id, ct.Action.Method, ct.Status);
//Prints: "ID: 1, Method: Void MyMethod(), Status: RanToCompletion"
请注意,要访问有关该方法的信息,您必须访问ct.Action.Method
。