当前位置: 首页 > 编程语言 > C#

WCTGetThreadWaitChaincallallwaysreturnsfalse分享

时间:2023-04-11 01:30:23 C#

WCTGetThreadWaitChaincallallwaysreturnsfalse归零。我究竟做错了什么?我在一个调用WaitForMultipleObjects的线程上调用它,我确保这个线程在调试时等待。那是我的代码:internalvoidCollectWaitInformation(ClrThreadthread){varg_WctHandle=OpenThreadWaitChainSession(0,0);uintthreadID=thread.OSThreadId;WAITCHAIN_NODE_INFO[]NodeInfoArray=newWAITCHAIN_NODE_INFO[WCT_MAX_NODE_COUNT];intisCycle=0;整数计数=0;//进行同步WCT调用以检索等待链。boolresult=GetThreadWaitChain(g_WctHandle,IntPtr.Zero,WCTP_GETINFO_ALL_FLAGS,threadID,refcount,NodeInfoArray,outisCycle);if(!result){//error}//最后...CloseSession(g_WctHandle);}[DllImport("Advapi32.dll")]publicstaticexternIntPtrOpenThreadWaitChainSession(OpenThreadChainFlagsFlags,DWORDcallback);[DllImport("Advapi32.dll")]publicstaticexternboolGetThreadWaitChain(IntPtrWctHandle,IntPtrContext,UInt32Flags,uintThreadId,refintNodeCount,[MarshalAs(UnmanagedType.LPArray,SizeParamIndex=4)][输入,输出]WAITCHAIN_NODE_INFO[]NodeInfoArray,输出intIsCycle);[StructLayout(LayoutKind.Sequential)]publicstructWAITCHAIN_NODE_INFO{publicWCT_OBJECT_TYPEObjectType;公共WCT_OBJECT_STATUS对象状态;公共结构LockObject{字符串ObjectName;LARGE_INTEGER超时;布尔警报;}publicstructThreadObject{DWORDProcessId;DWORD线程标识;DWORD等待时间;DWORD上下文开关;在我之前的问题的帮助下:CallingaC++methodfromC#usingapointerparameter(WCT)来自文档:NodeCount[in,out]在输入时,从1到WCT_MAX_NODE_COUNT的数字指定节点数在返回时的等待链中,检索到的节点数。....你这个要求不及格,因为你传入了0。以上是C#学习教程:WCTGetThreadWaitChain调用allways返回false分享所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢