1
7
我使用了
Reflector
我在BCL中看到的唯一代码(或者更准确地说是Nikolaos看到的)使用
另一件需要注意的事情是,根据应用程序的信任级别,代码访问安全性和更改私有成员可能会有问题。显然,这似乎没有发挥你的测试,但值得一提的是在这里。 |
2
10
在操作系统级别,线程没有名称。真的,这只是一个方便的功能。 |
3
4
我不会像你那样改变线程的名称。当您正在做一个write-many操作所需的相同操作时,您不知道没有行为依赖于只写一次的操作。 例如,调试器如果获得线程名称,就可以缓存该名称,而不必再为其调用对象。
如果您想捕获某个语义,则不应该将记录器和线程的形状设置为符合将捕获该语义的模式。相反,在特定的时间点显式地向记录器指示语义。 |
4
3
所以更通用的解决方案是
|
5
1
本身 在更改线程的名称时,除了在将来的版本中因为使用非公共API而有被破坏的风险之外。 但是,你有什么理由改变它?我认为它是只读的,以避免创建执行各种任务的“厨房水槽”线程。当然,也有例外,但我要提醒您考虑一个需要这个的设计是否是正确的设计。 |
6
1
一个可能的解决方法是使用一个实例类,该类包含一个ID-“name”键值对的字典。
我遇到了同样的问题,因为我使用的线程池线程刚刚得到重用。 |
7
1
我的解决办法是将线程名称推入
log4net
|
8
0
改变名字,或者试图改变名字,很可能会破坏一些东西。如果执行
|
9
0
有一种确定的可能性,即某些东西依赖于名称是不变的,这就是设计所要求的。通过破坏这种封装,您将冒着破坏(真诚地)依赖于此的东西的风险。我不能给出一个具体的例子,但是由于这个属性可以以任何可以想象的方式使用,所以这个问题是无限的。作为一个理论示例,可以使用线程的名称作为集合中的键。 我很想知道是否有一个非常具体的例子,虽然我也使用log4net,看看你在说什么。:) 更新
更新2 该技术的一个粗略示例:
|
10
0
我发现文兹贝的上述回答很有用。Brain-Gideon的答案是,InformThreadNameChange(.net4.0)需要ThreadHandle结构。因此,只做上述操作不会通知VS名称发生了更改,但是您可以在我包含的代码中看到,在您将名称设置为null之后,将tread name设置为null它将传播。
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
rhymes · 如何让线程操作相同的java列表 2 年前 |