【发布时间】:2018-08-01 09:06:49
【问题描述】:
我需要它来调试,通过代码而不是通过某些 UI 工具。
TaskScheduler 类具有返回ThreadPoolTaskScheduler 的属性Current,但它是内部的,显然在taskchd.dll 中。
TaskScheduler 的 GetScheduledTasks() 也受到保护
换句话说,您不能使用它来列出任务。我需要列出所有任务,包括代表我的控制台应用程序在基本 NET 代码中间接创建的任务
【问题讨论】:
-
您是否尝试过使用反射来访问内部?我不建议将其用于生产,只是说。
-
TaskScheduler 有两个内部方法供调试器使用,这就是它在 VS 中实现 Debug > Windows > Tasks 工具窗口的方式。静态 TaskScheduler[] GetTaskSchedulersForDebugger() 允许您迭代所有调度程序,Task[] GetScheduledTasksForDebugger 允许您迭代每个调度程序的所有任务。使用反射来调用它们。请注意,在程序运行并主动创建/执行任务时调用它们并不是特别安全,调试器不会出现问题,因为它会冻结程序。
标签: c# taskscheduler