【问题标题】:Is it possible to trap thread start and end events?是否可以捕获线程开始和结束事件?
【发布时间】:2013-02-03 13:42:02
【问题描述】:

我在 C# 和 VB.Net 中继承了一个相当大的 Visual Studio WinForms 项目

当我使用它时,我在调试窗口中收到如下消息:

The thread '<No Name>' (0x1194) has exited with code 0 (0x0).
The thread '<No Name>' (0x664) has exited with code 0 (0x0).
The thread '<No Name>' (0x14b0) has exited with code 0 (0x0).

为了更好地了解该软件,我很想研究这些线程是什么。是否有任何我可以使用的工具或我可以打开的调试选项允许我在创建/终止新线程时中断?

注意:我在所有能找到的“... = new Thread”和“... .RunWorkerAsync()”代码上都设置了断点,但它们都没有。

【问题讨论】:

  • 任何时候使用Task.Run(或由返回Task的方法在内部使用),如果线程池中没有活动线程,它也可能创建一个线程。

标签: c# vb.net multithreading winforms visual-studio-2012


【解决方案1】:

我知道这不是您问题的确切答案,但这里有一些已发布到另一个问题的相关信息:Break on thread creation in Visual Studio debugger

【讨论】:

  • 是的,这看起来很像我要问的问题,但没有得到答复。
【解决方案2】:

在 Thread 类中有一个可以设置的 name 属性。当您更改它时,输出中的“No Name”文本将替换为您在此处设置的内容。这将使您更容易看到正在发生的事情。

Thread MyThread = new Thread(...);
MyThread.Name = "MyName"; //Can only be set once.
MyThread.Start(....);

【讨论】:

  • 谢谢哈利!不幸的是,我不知道是什么在启动线程,这是我试图解决的问题。我希望如果我可以捕获线程启动和停止事件,我还可以找出创建它们的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2018-09-17
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
相关资源
最近更新 更多