首页 新闻 会员 周边 捐助

C#Thread如何获取线程的句柄

0
悬赏园豆:10 [已解决问题] 解决于 2016-04-29 10:17

c#中创建线程一般如下:
             System.Threading.Thread backThread = new System.Threading.Thread(this.worker.Start);
             backThread.Start();
其中this.worker.start是一个死循环的计算线程,由于我的主画面线程通过Impersonate来模拟登录的用户,现在我希望不需要重启bakThread来模拟当前登录的用户。
    我准备通过获取backThread的句柄,从而调用SetThreadToken来实现。但是目前查了很多资料也没找到如何得到backThread的句柄。

Johnye的主页 Johnye | 初学一级 | 园豆:87
提问于:2016-04-27 20:28
< >
分享
最佳答案
0

你实际上只需要通过通知的方式告知backThread需要去做SetThreadToken就可以了吧?

 

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2016-04-28 09:43

因为Worker.start中会启动Socket服务线程,该线程中会设置线程池去接收Socket传送的数据。因为我不想所有的线程内部去执行SetThreadToken,我希望在主线程中遍历所有的线程,然后获取线程句柄,然后执行setthreadtoken。

Johnye | 园豆:87 (初学一级) | 2016-04-28 10:13

@Johnye: 遍历线程应该是做不到的,就算你能遍历又如何?你看到了a线程,但你能保证后面a线程还活着么?

我没太明白你的描述,如果能贴下代码最好。但感觉你的需求只需要通过一些通知就能处理了。

Daniel Cai | 园豆:10424 (专家六级) | 2016-04-28 17:34

@Daniel Cai: 我在c#的UI线程中通过提权,然后遍历当前进程中的线程,再执行SetThreadToken,就成功了。

Johnye | 园豆:87 (初学一级) | 2016-04-29 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册