如何列出控制台应用程序中的所有任务?

时间:2018-02-21 17:14:11

标签: c# taskscheduler

我需要通过代码而不是通过一些UI工具进行调试。

TaskScheduler具有返回Current的属性ThreadPoolTaskScheduler,但它是内部的,显然位于taskschd.dll中。

GetScheduledTasks()的{​​{1}}也受到保护 换句话说,您无法使用它来列出任务。我需要列出所有任务,包括代表我的控制台应用程序间接在基本NET代码中创建的任务

1 个答案:

答案 0 :(得分:0)

您可以使用System.Reflection api执行此操作。您可以通过向反射方法提供适当的BindingFlags来查询非公共成员:

var type = typeof(TaskScheduler);
var fieldinfo = type.GetProperty("Current", BindingFlags.Instance | BindingFlags.NonPublic);
var methodInfo = type.GetMethod("GetScheduledTasks", BindingFlags.Instance | BindingFlags.NonPublic));

..在获取属性和方法的元数据后,您可以致电PropertyInfo.GetValueMethodInfo.Invoke