Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中对主线程的引用#_C#_Multithreading_Reference_Main - Fatal编程技术网

C# C中对主线程的引用#

C# C中对主线程的引用#,c#,multithreading,reference,main,C#,Multithreading,Reference,Main,如何从C#中的另一个线程获取对主线程的引用 为什么需要这样做?以加载到控制台应用程序的程序集为例。此程序集引发另一个线程,该线程希望在控制台应用程序的主线程上等待(加入)。它将如何做到这一点 我的想法是:在VisualStudio2010中,您可以在调试时检查线程信息。“线程”窗口中的一列是指定线程是工作线程还是主线程的类别。有可能得到这个信息吗 或者这样:获取作为入口点(主线程?)的函数名,然后迭代当前进程中的所有线程。我如何获得这些信息 谢谢。您可以在创建另一个线程时存储对线程的引用。Cur

如何从C#中的另一个线程获取对主线程的引用

为什么需要这样做?以加载到控制台应用程序的程序集为例。此程序集引发另一个线程,该线程希望在控制台应用程序的主线程上等待(加入)。它将如何做到这一点

我的想法是:在VisualStudio2010中,您可以在调试时检查线程信息。“线程”窗口中的一列是指定线程是工作线程还是主线程的类别。有可能得到这个信息吗

或者这样:获取作为入口点(主线程?)的函数名,然后迭代当前进程中的所有线程。我如何获得这些信息


谢谢。

您可以在创建另一个线程时存储对
线程的引用。CurrentThread
(将是主线程)。

没有线程是真正的主线程。当你产生更多的线程后,哪个线程是主线程就不再重要了。找出最先创建的线程的唯一方法是将对该线程的引用保存在某个全局静态字段中。

“此程序集引发另一个要在控制台应用程序的主线程上等待(加入)的线程。它将如何做到这一点?”-通常,主线程将加入另一个线程,而不是反过来。我从来没有看到你所说的需要。这是线程名称,而不是关于入口点在程序集上的反射的类别。有人能想出如何找到入口点方法吗?那么UI线程是什么呢??当然UI线程就是所谓的“主线程”。我不同意你的看法。@Aliostad:UI线程是当前调用
应用程序的线程。运行
。从技术上讲,它们与其他线程没有什么不同。@SLaks是的,但它们所做的是非常不同的。处理WIN32消息循环发生在它们身上,因此它们需要区别对待。好吧,这个问题的全部要点是:如果您无法访问主线程,例如当您的代码位于由其他可执行文件加载的DLL中时,该怎么办。@Aliostad@Vertilka每个线程理论上都可以处理消息循环。他们无法区分。请看评论,了解安德雷的回答