在c#中,如何检查线程池中的线程是工作线程还是I/O线程?
是否可以识别线程是辅助线程还是I/O 我知道密码在c#中,如何检查线程池中的线程是工作线程还是I/O线程?,c#,multithreading,io,threadpool,C#,Multithreading,Io,Threadpool,是否可以识别线程是辅助线程还是I/O 我知道密码 Thread.CurrentThread.IsThreadPoolThread 此代码用于显示它是否是线程池线程,但似乎没有方法显示它是否是工作线程 我怎么检查?有可能吗?线程之间没有区别,除了它们所在的池,您可以在这里阅读: 线程不知道它来自的池。所以这是不可能的。-在Dynamix AX中,“工作线程”和“I/O线程”实际上没有技术上的区别。中有一种叫做。isWorkerThread,但不确定除了:)之外是否缺少任何上下文。I/O线程是执行
Thread.CurrentThread.IsThreadPoolThread
此代码用于显示它是否是线程池线程,但似乎没有方法显示它是否是工作线程
我怎么检查?有可能吗?线程之间没有区别,除了它们所在的池,您可以在这里阅读:
线程不知道它来自的池。所以这是不可能的。-
在Dynamix AX中,“工作线程”和“I/O线程”实际上没有技术上的区别。
中有一种叫做。isWorkerThread
,但不确定除了:)之外是否缺少任何上下文。
I/O线程是执行I/O回调的线程。因此,任何异步I/O回调都将在线程池I/O线程上处理。如果需要知道在回调方法本身之外运行的线程,可能需要重新设计:)至少,如果需要,可以将该信息作为参数传递。你想解决什么问题?@Luaan,谢谢你的回答。我只是测试一些代码,看看哪种线程处理回调。请注意,将线程池线程分为工作线程和I/O是一个实现细节。它可以随时更改,因此您不应该真正依赖于具体情况—可以随时添加新池,也可以合并现有池。请记住这些模式——在异步回调中,您只想做尽可能少的工作,如果您需要做更多的工作,请进一步安排工作(使用ThreadPool.QueueWorkerItem
,Task.Run
或其他机制,例如,如果您有自己的计划)。