Process.GetCurrentProcess().Threads 集合中找到当前的processThread
早上和Anakin一起讨论昨天的问题,虽没结果,但从他那里学到了怎么查看线程。
下一步要解决的问题,processThread 和 thread的 区别是什么!
问题解决了.
昨天的问题在 Process.GetCurrentProcess().Threads[0].UserProcessorTime 中的Threads[0]是不是当前进程。当然,结果是
不一定。在VS2005的IDE中可以发现当前的thread有11个,Threads[0]不是当前线程。那么关键问题就是怎么获取当前线程。
processThread类中只有属性ID,而Thread的属性中没有ID只有Name。所以不能通过Thread类的GetCurrentThread来获取当前线
程ID,和processThread联系,只能用其他办法。经查,发现一个系统函数可以获取当前线程ID:
public static extern Int32 GetCurrentWin32ThreadID();
当前线程ID获取后,就能在Process.GetCurrentProcess().Threads 集合中找到当前的processThread了。获取函数如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
{
[DllImport("Kernel32", EntryPoint = "GetCurrentThreadId", ExactSpelling = true)]
public static extern Int32 GetCurrentWin32ThreadID();
public static ProcessThread GetProcessThreadFromWin32ID(Int32 threadID)
{
ProcessThread pthred = null;
if (threadID == 0)
threadID = ThreadUtility.GetCurrentWin32ThreadID();
foreach (ProcessThread proThread in Process.GetCurrentProcess().Threads)
{
if (proThread.Id == threadID)
pthred=proThread;
else
pthred= Process.GetCurrentProcess().Threads[0];
}
return pthred;
}
}
这样,问题就解决了。
总结,processThread记录了线程的一些重要信息,比如UserProcessorTime等等。但是peocess没有现成的函数直接找到当前线
程,因此需要用win32系统函数找到当前线程ID后,再在processThread集合中找。
转载于:https://www.cnblogs.com/plaqin/archive/2010/05/20/1739995.html
Process.GetCurrentProcess().Threads 集合中找到当前的processThread相关推荐
- ruby 集合 分组_在Ruby中找到两个集合之间的区别
ruby 集合 分组 Finding differences simply means that finding elements that are uncommon between two sets ...
- java8 list 去重_Java8-Stream在集合中的8种应用案例
前言 Java8新特性我们使用的应该比较多了,今天这里整理了个人使用最多的8种场景,希望对大家有所帮助. Java Stream在集合中的运用案例 遍历 遍历也许是我们使用最多的功能了,在Java8之 ...
- Python程序从给定的N个数字中找到最大倍数
Here, we will be framing code for finding the maximum multiple of a number x from a given set of a n ...
- java listt add_Java8 使用流抽取ListT集合中T的某个属性操作
免费资源网 - https://freexyz.cn/ 在java开发中,我们经常会遇到需要从一个集合中,抽取集合中元素的某一个属性.在java8之前,我们通常采用for循环去获取,但java8之后我 ...
- 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)
目录 LeetCode216. 组合总和III 1. 思路 2. 代码实现 3. 剪枝 4. 复杂度分析 5. 思考与收获 LeetCode17. 电话号码的字母组合 1. 思路 2. 代码实现 3. ...
- 【U8】固定资产结账提示“在对应所需名称或序数的集合中,未找到项目”
固定资产结账时报错: 在对应所需名称或序数的集合中,未找到项目,自动备份本月帐套失败,如果继续进行月末结账则不能恢复到月末结账前状态. 解决方法: 是卡片样式的问题,查看 fa_model 表,每一个 ...
- 迷宫出路代码_如何在软件开发的迷宫中找到自己的出路
迷宫出路代码 by Tim Kleier 蒂姆·克莱尔(Tim Kleier) 如何在软件开发的迷宫中找到自己的出路 (How to find your way through the corn ma ...
- 替换某个字符串_postman教程-10-如何在集合中快速查询和替换数据
有时候我们常会遇到这样一种问题,系统中有太多的用例,环境变量和系统变量的值也太多,查找其中的某个值太不方便:或者有的值想要修改,但苦于修改的地方太多,修改起来太费劲.那么,针对这样的困扰,是否有办法解 ...
- 考考基础部分,谈谈Java集合中HashSet的原理及常用方法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:工匠初心 cnblogs.com/LiaHon/p/1125 ...
最新文章
- TeaseR++:快速鲁棒的C++点云配准库介绍+英文版视频教程
- 1035 插入与归并
- 多层AOP 解决AOP执行顺序
- 菠萝蜜\菠萝蜜和榴莲有什么区别?
- start.s中的.balignl 16,0xdeadbeef
- 【数据结构与算法】链式栈的Java实现
- python面试技巧_经典7大Python面试题!看完考官竟然给了我30k的薪资
- vsto 外接程序安装成功为什么不显示_为什么说买笔记本一定要带雷电3接口?了解这5点你就明白了...
- VC++动态链接库(DLL)编程(二)--非MFC DLL
- 用友中标:打造新一代云化ERP 落地大型企业互联网+
- springcloud与springcloudalibaba版本对应关系
- VB.net小技巧系列目录
- hive 转拼音udf_Hive UDF编程:自己动手实现implode函数
- jQuery-表单校验
- 就业培训 | 2020第一期重庆高校毕业生大数据职业技能线上特训营开课啦
- 性能优化--启动优化(网易云音乐启动方案)
- Fiddler+手机模拟器+java采集抖音评论数据
- html移动轮播后盾网,后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件...
- 老派程序员浅谈Python的异常处理
- macmini 387 2k显示器尝试hidpi
热门文章
- 日期类计算器的实现以及运算符重载
- 10 种最常见的 Javascript 错误 — 总结于 1000+ 个项目,并阐述如何避免
- jenkins整合gitee自动部署SpringBoot项目
- 一种Latex环境搭建-CTex2.9和Winedt10.2安装和配置
- 扩容卡怎么恢复实际容量_Win10电脑硬盘数据损坏了怎么办?电脑数据恢复分享!...
- Echart 的常用配置
- 14.EPSANet: An Efficient Pyramid Squeeze Attention Block on Convolutional Neural Network(2021.3)
- 2012 “社区活动”博客专栏未收录活动
- 高考刚过本科线如何填报志愿
- 使用redis实现排行榜功能