英文:
What's the link between System.Threading.Thread and System.Diagnostics.ProcessThread
问题
这个先前的问题 解释了如何为线程命名。
然而,问题在于它提到了 ProcessThread
,我想知道如何将这样的 ProcessThread
与首次创建的 System.Threading.Thread
关联起来。
英文:
This previous question explains what to in order to give a name to a thread.
The problem, however, is that this speaks about ProcessThread
, and I would like to know how to link such a ProcessThread
with the firstly created System.Threading.Thread
.
答案1
得分: 1
在我的应用程序中,线程在各个地方创建并启动。甚至会出现线程多次创建和启动的情况。我想通过询问“告诉我哪些线程当前正在运行,我将在此处查找要启动的线程,但如果线程已经在运行,我就不会这样做”,来避免这种情况。
正如@Ralf建议的,最简单的方法是完全自己控制。而不是问“哪些线程当前正在运行”,您可以在创建新线程时填充一个数据结构,以便以后查询。从本质上讲,您的问题是一个依赖管理的问题。
值得指出的是,您的应用程序带有一些传统。如评论中所提到的,直接使用低级线程会带来一系列问题。为了使应用程序跟上当前的发展,您可以重构您的应用程序,使用 Task
而不是 Thread
。
相同的状态管理适用。您可以使用数据结构(或字典)来跟踪您的任务,然后通过 task.TaskStatus 监视它们的进度。
英文:
> in my application, threads get created and started all over the place. It goes even that far, that threads get created and started up multiple times. I would like to avoid this, simply by asking "Tell me which threads are currently running, I will search for the thread I want to start up here, but when the thread is already running, I won't do that.".
As suggested by @Ralf, the path of least resistance will be to take full control yourself. Instead of asking "which threads are currently running", you could hydrate a data structure with the new thread(s) whenever you create it. Allowing you to query it later. In essence your problem is one of dependency management.
It's worth pointing out that your application brings it legacy. As mentioned in the comments, working directly with low level threads brings it own slew of problems. To bring the application into the current decade, you could refactor your app to use Task
instead of Thread
.
The same state management applies. You can keep track of your tasks using a data structure (or dictionary) and then monitor their progress through task.TaskStatus.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论