c#中创建线程一般如下:
System.Threading.Thread backThread = new System.Threading.Thread(this.worker.Start);
backThread.Start();
其中this.worker.start是一个死循环的计算线程,由于我的主画面线程通过Impersonate来模拟登录的用户,现在我希望不需要重启bakThread来模拟当前登录的用户。
我准备通过获取backThread的句柄,从而调用SetThreadToken来实现。但是目前查了很多资料也没找到如何得到backThread的句柄。
你实际上只需要通过通知的方式告知backThread需要去做SetThreadToken就可以了吧?
因为Worker.start中会启动Socket服务线程,该线程中会设置线程池去接收Socket传送的数据。因为我不想所有的线程内部去执行SetThreadToken,我希望在主线程中遍历所有的线程,然后获取线程句柄,然后执行setthreadtoken。
@Johnye: 遍历线程应该是做不到的,就算你能遍历又如何?你看到了a线程,但你能保证后面a线程还活着么?
我没太明白你的描述,如果能贴下代码最好。但感觉你的需求只需要通过一些通知就能处理了。
@Daniel Cai: 我在c#的UI线程中通过提权,然后遍历当前进程中的线程,再执行SetThreadToken,就成功了。