我以前没有使用Windows的DebugDiag,需要对此报告有所了解。
我的EWS托管API应用程序会在事件发生的每个时间跨越一个新任务。
我的应用程序运行大约30-35%的CPU使用率,所以我决定运行这个诊断工具来找出问题和原因。
我得到了这个,需要确保我所看到的是正确的。
从下面的图片可以看出,Task.StartNew
函数执行了5次,导致CPU使用率过高?
更新
在深入了解之后,我发现了似乎是" Stacktrace"一些函数调用以红色突出显示,我感觉红色表示这些函数导致高CPU,并且这些函数似乎来自EWS托管API代码。
答案 0 :(得分:0)
我发现CPU吃了一段代码。
我在Tast中有一个无限循环,因为我需要防止它被垃圾收集。
While Not pToken.IsCancellationRequested
If pToken.IsCancellationRequested Then Return
End While
这导致我的CPU使用率一直高达38%!
所以我使用了
_CancelSignal = New AutoResetEvent(False)
_CancelSignal.WaitOne()
让线程进入睡眠状态,直到我通过设置_CancelSignsal