在以下转储文件中
windbg!dumpstack
monitor.wait入口点在哪里?
以及我如何找到等待的原因?
和导致等待的功能?
我确定等待发生在这里,但我无法通过转储文件找到我的方式
等待发生在哪个功能?
我怎样才能进一步调查等待的原因?
是否有任何资源或教程可以找到这种等待的原因?
ntdll!NtWaitForMultipleObjects+14
KERNELBASE!WaitForMultipleObjectsEx+ef
coreclr!Thread::DoAppropriateWaitWorker+fe
coreclr!Thread::DoAppropriateWait+7d
coreclr!CLREventBase::WaitEx+7f
coreclr!SyncBlock::Wait+194
[[GCFrame]]
coreclr!ObjectNative::WaitTimeout+d4
[[HelperMethodFrame_1OBJ] (System.Threading.Monitor.ObjWait)] System.Threading.Monitor.ObjWait(Boolean, Int32, System.Object)
System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)+398
System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)+b9
System.Threading.Tasks.Task.InternalWait(Int32, System.Threading.CancellationToken)+1a2
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+25
Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperPartialExtensions.Partial(Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper, System.String, System.Object, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary)+3c
AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86.MoveNext()+2c2
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86, fkzqs1mt.znn]](<ExecuteAsync>d__86 ByRef)+45
AspNetCore._Areas_Article_Views_Article_Index_cshtml.ExecuteAsync()+7e
Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderPageAsync>d__14.MoveNext()+367
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib]].Start[[Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderPageAsync>d__14, Microsoft.AspNetCore.Mvc.Razor]](<RenderPageAsync>d__14 ByRef)+4d
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage, Microsoft.AspNetCore.Mvc.Rendering.ViewContext, Boolean)+ac
Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderAsync>d__13.MoveNext()+a6
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderAsync>d__13, Microsoft.AspNetCore.Mvc.Razor]](<RenderAsync>d__13 ByRef)+45
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(Microsoft.AspNetCore.Mvc.Rendering.ViewContext)+89
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor+<ExecuteAsync>d__18.MoveNext()+2e5
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor+<ExecuteAsync>d__18, Microsoft.AspNetCore.Mvc.ViewFeatures]](<ExecuteAsync>d__18 ByRef)+45
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(Microsoft.AspNetCore.Mvc.ActionContext, Microsoft.AspNetCore.Mvc.ViewEngines.IView, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary, Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary, System.String, System.Nullable`1<Int32>)+cc
Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor.ExecuteAsync(Microsoft.AspNetCore.Mvc.ActionContext, Microsoft.AspNetCore.Mvc.ViewEngines.IView, Microsoft.AspNetCore.Mvc.ViewResult)+8a
Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26.MoveNext()+e5
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26, Microsoft.AspNetCore.Mvc.ViewFeatures]](<ExecuteResultAsync>d__26 ByRef)+45
Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext)+89
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeResultAsync>d__30.MoveNext()+88
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeResultAsync>d__30, Microsoft.AspNetCore.Mvc.Core]](<InvokeResultAsync>d__30 ByRef)+45
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult)+89
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+1351
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResultFilterAsync>d__28.MoveNext()+b0
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResultFilterAsync>d__28, Microsoft.AspNetCore.Mvc.Core]](<InvokeNextResultFilterAsync>d__28 ByRef)+45
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextResultFilterAsync()+84
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+128e
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResourceFilter>d__22.MoveNext()+b0
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResourceFilter>d__22, Microsoft.AspNetCore.Mvc.Core]](<InvokeNextResourceFilter>d__22 ByRef)+45
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextResourceFilter()+84
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+583
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeAsync>d__20.MoveNext()+1f3
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeAsync>d__20, Microsoft.AspNetCore.Mvc.Core]](<InvokeAsync>d__20 ByRef)+45
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeAsync()+9b
Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4.MoveNext()+2e4
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4, Microsoft.AspNetCore.Routing]](<Invoke>d__4 ByRef)+45
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+21b
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9
Microsoft.AspNetCore.Session.SessionMiddleware+<Invoke>d__9.MoveNext()+2a6
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Session.SessionMiddleware+<Invoke>d__9, Microsoft.AspNetCore.Session]](<Invoke>d__9 ByRef)+45
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4.MoveNext()+1c9
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4, Microsoft.AspNetCore.Routing]](<Invoke>d__4 ByRef)+45
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware+<Invoke>d__6.MoveNext()+76
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware+<Invoke>d__6, Microsoft.AspNetCore.Diagnostics]](<Invoke>d__6 ByRef)+45
Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+8f
Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware+<Invoke>d__3.MoveNext()+ba
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware+<Invoke>d__3, Microsoft.AspNetCore.Diagnostics]](<Invoke>d__3 ByRef)+45
Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware+<Invoke>d__8.MoveNext()+3c5
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware+<Invoke>d__8, Microsoft.AspNetCore.Server.IISIntegration]](<Invoke>d__8 ByRef)+45
Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware+<Invoke>d__3.MoveNext()+205
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware+<Invoke>d__3, Microsoft.AspNetCore.Hosting]](<Invoke>d__3 ByRef)+45
Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89
Microsoft.AspNetCore.Hosting.Internal.HostingApplication.ProcessRequestAsync(Context)+39
Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1+<RequestProcessingAsync>d__2[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]].MoveNext()+63e
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1+<RequestProcessingAsync>d__2[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]], Microsoft.AspNetCore.Server.Kestrel]](<RequestProcessingAsync>d__2<Context> ByRef)+45
Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]].RequestProcessingAsync()+ad
System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].InnerInvoke()+9b
System.Threading.Tasks.Task.Execute()+49
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+97
System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)+23e
System.Threading.Tasks.Task.ExecuteEntry(Boolean)+a2
System.Threading.ThreadPoolWorkQueue.Dispatch()+1e2
coreclr!CallDescrWorkerInternal+83
coreclr!MethodDescCallSite::CallTargetWorker+14e
coreclr!QueueUserWorkItemManagedCallback+38
coreclr!QueueUserWorkItemManagedCallback+2df
coreclr!QueueUserWorkItemManagedCallback+234
coreclr!QueueUserWorkItemManagedCallback+161
[[DebuggerU2MCatchHandlerFrame]]
coreclr!QueueUserWorkItemManagedCallback+7b
coreclr!ManagedPerAppDomainTPCount::DispatchWorkItem+8e
coreclr!ThreadpoolMgr::WorkerThreadStart+188
coreclr!Thread::intermediateThreadProc+8b
kernel32!BaseThreadInitThunk+14
ntdll!RtlUserThreadStart+21
答案 0 :(得分:0)
在ManualResetEventSlim.Wait中调用Monitor.Wait。
ManualResetEventSlim类在等待设置事件时进行一些旋转,如果事件在轮询/旋转时未设置,则会调用Monitor.Wait。
快速扫描堆栈跟踪,看起来您正在等待异步任务完成。这里是等待开始的地方..只需按照堆栈跟踪(转储堆栈对象来查找并进一步分析传入的粗体任务或!clrstack -a可能会获得更多参数和本地信息)。
System.Threading.Tasks.Task.InternalWait(Int32, System.Threading.CancellationToken)+1a2
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(**System.Threading.Tasks.Task**)+25
Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperPartialExtensions.Partial(Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper, System.String, System.Object, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary)+3c
AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86.MoveNext()+2c2
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86, fkzqs1mt.znn]](<ExecuteAsync>d__86 ByRef)+45
AspNetCore._Areas_Article_Views_Article_Index_cshtml.ExecuteAsync()+7e