如何在单独的线程池或专用线程上进行 System.Timer 回调?
背景
我有一个使用 System.Timer 的关键应用程序的轻量级监视器,但无法弄清楚如何使回调不在 ThreadPool 中,并以高优先级运行。
原因如下:
如果关键应用程序没有响应,ThreadPool 将向挂起的线程发送取消令牌、Thread.Abort 或 Win32 Abort(不运行终结器)。
如果应用程序受 CPU 限制,那么我的监控线程应该以最高优先级运行,以防止拒绝对我的显示器提供服务
线程池可能由于线程过多或MaxThreads值过低而耗尽
无法为线程池中的线程设置优先级(AFAIK)
因此,我认为有必要有一个 Timer 并且它在一个单独的线程上回调,尽管我不知道如何实现这一点。
如果这可以通过创建单独的 AppDomain 来实现,CLR 是否仍允许我向不同 AppDomain 中的其他线程发出命令?