asp.net – 异步代码,无需等待完成
发布时间:2020-12-16 03:54:24 所属栏目:asp.Net 来源:网络整理
导读:我目前遇到IIS崩溃的问题,在事件日志中留下以下消息.他们在指导错误的实际来源方面没有太大帮助,但是一些研究表明,这只是产生任务的情况,而不是等待结果,如果父进程完成它们最终完成它不能与导致空引用异常的父线程相关联.那是对的吗? 在大多数情况下,我已
我目前遇到IIS崩溃的问题,在事件日志中留下以下消息.他们在指导错误的实际来源方面没有太大帮助,但是一些研究表明,这只是产生任务的情况,而不是等待结果,如果父进程完成它们最终完成它不能与导致空引用异常的父线程相关联.那是对的吗?
在大多数情况下,我已经删除或添加了等待这种情况,但在某些方面它很方便.一个这样的例子是会话开始是内存缓存会话特有的一些细节,但是它们并不重要,所以我启动任务来完成这项工作,但不等待它. I have added ConfigureAwait(false),这是否足以防止将来出现错误?听起来这将删除线程切换,我认为这将防止错误. Task.Run(() => { // Do caching here }).ConfigureAwait(false); ASP.NET 4.0.30319.0 Exception: System.NullReferenceException Message: Object reference not set to an instance of an object. StackTrace: at System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonationContext) at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext) at System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback callback,Object state) at System.Web.LegacyAspNetSynchronizationContext.CallCallback(SendOrPostCallback callback,Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback,Object state,Task& currentTask) --- End of stack trace from previous location where exception was thrown --- at System.Threading.Tasks.AwaitTaskContinuation.<ThrowAsyncIfNecessary>b__1(Object s) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback callback,Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() .NET运行时 Application: w3wp.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.NullReferenceException Stack: at System.Threading.Tasks.AwaitTaskContinuation.<ThrowAsyncIfNecessary>b__1(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,Boolean) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() 应用程序错误 Faulting application name: w3wp.exe,version: 7.5.7601.17514,time stamp: 0x4ce7afa2 Faulting module name: KERNELBASE.dll,version: 6.1.7601.18015,time stamp: 0x50b8479b Exception code: 0xe0434352 Fault offset: 0x0000000000009e5d Faulting process id: 0x1d98 Faulting application start time: 0x01ceaf8ea10ece66 Faulting application path: c:windowssystem32inetsrvw3wp.exe Faulting module path: C:Windowssystem32KERNELBASE.dll Report Id: 341b9a76-1b82-11e3-8e17-005056be0005 解决方法
经过一个追逐这个问题的早晨,我终于发现有一条路径可以让父母绕过等待创造这个问题.快速重构以防止这种情况解决了这个问题.
以最简单的形式,导致问题的代码就是这样 var getDataTask = getData(); if(some_condition == true) { return some_object; } getDataTask.Wait(); return getDataTask.result; 如果some_condition == true,则该方法将返回而不等待getDataTask完成.重构停止修复它 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用带有自定义角色提供程序的asp.net mvc 4登录失败时,错误
- asp.net – 在页面中间显示Ajax UpdateProgress
- asp.net-mvc – 如何使这个ASP.NET MVC控制器更易于测试?
- asp.net – 每个人如何存储连接字符串?
- 如何从ASP.Net MVC中的JavaScript到TypeScript?
- 如何在ASP.NET中使用log4net在日志文件中包含SessionID?
- [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Lin
- 在ASP.NET Identity中添加角色
- 如何从ASP.NET Web API返回已排序的字典
- .net – 具有预编译视图的助手
推荐文章
站长推荐
- asp.net-mvc-4 – 页脚的Kendo Grid Aggregation
- asp.net – 客户端确认后DropdownList autoposba
- 如何在ASP.NET中绘制折线图
- asp.net-mvc – 将数据发布回ASP.NET MVC子操作
- ASP.NET和Web Tools 2012.2引用LESS文件
- asp.net – 在global.asax中注册并使用Unity的记
- asp.net-mvc – 尝试通过nginx / fastcgi使用eve
- [asp.net core 源码分析] 01 - Session
- asp.net-mvc – 在AppHarbor上获取文件内容
- 如何在ASP.NET中获取原始请求体?
热点阅读