C#windows窗体-为不同线程获取相同的线程id

C#windows窗体-为不同线程获取相同的线程id,c#,multithreading,winforms,C#,Multithreading,Winforms,我正在使用C#windows窗体应用程序。 我用这个代码开始线程 System.Threading.Thread thread = new System.Threading.Thread(() => ThreadFunctions.FirstThread(this)); thread.Start(); 主线程和线程如何具有相同的id 我正在用这个代码打印线程id label.Text=“线程主ID:+System.Threading.Thread.

我正在使用C#windows窗体应用程序。 我用这个代码开始线程

            System.Threading.Thread thread = new System.Threading.Thread(() => ThreadFunctions.FirstThread(this));
        thread.Start();
主线程
线程
如何具有相同的id

我正在用这个代码打印线程id

label.Text=“线程主ID:+System.Threading.Thread.CurrentThread.ManagedThreadId


此外,我正在启动一些任务,并获得相同的Id。

如果线程具有相同的Id,则它们是相同的线程。我的猜测是,由于代码出现在设置标签标题的代码中,它正在主线程上运行。您正在使用
Invoke
将其放在主线程上,是吗


通过在线程中构建包含ID的字符串来处理该问题。在UI线程上调用的委托之外

您无法从非UI线程修改UI,因此您的代码将引发异常,或者您正在从其他线程封送到UI。我是否遗漏了什么?您正在从主线程打印当前线程的ID,对吗?因此,它当然与主线程相同……您应该提供所有代码以获得正确答案。我正在使用invoke、delegate更改UI控制值。我认为您是对的,我正在通过调试器查看变量值
int tmp1=System.Threading.thread.CurrentThread.ManagedThreadId它是不同的。但是在
标签中打印
我是gatting主线程id。我如何才能为次线程打印正确的id?就像我说的。读取线程中的ID。在调用的委托中使用变量捕获。使用该变量捕获将ID的值传递给UI线程。