Mic*_*mon 5 c# asp.net asynchronous webforms
如果我只运行其中一个异步事件,则所有内容都应该完全按照应有的顺序执行.但是,当我添加所有3个事件时,我(从我收集的内容)得到了语法的超时.这是一个完整的堆栈跟踪,希望有所帮助.
System.Web.HttpUnhandledException(0X80004005):类型System.Web.HttpUnhandledException'引发的异常.---> System.NullReferenceException:对象未设置为一个对象的一个实例..
在System.Web.UI.Page.d__554.MoveNext()
在System.Web.UI.Page.HandleError(例外五)
在系统.Web.UI.Page.d__554.MoveNext()
---在抛出异常的前一个位置的堆栈跟踪结束---
在System.Runtime.CompilerServices上的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务). 位于c:\ Windows\Microsoft的ASP.pages_AsyncTest1_aspx.EndProcessRequest(IAsyncResult ar)的 System.Web.UI.Page.AsyncPageEndProcessRequest(IAsyncResult结果)的
System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar)
中的TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\14a1541c\96dbdee3\App_Web_AsyncTest1.aspx.f9b0821e.cqtg2bnc.0.cs:
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication中的第0行. IExecutionStep.Execute()
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔逻辑completedSynch ronously)
异常类型:System.Web.HttpUnhandledException
消息:类型的异常"System.Web.HttpUnhandledException"被抛出.
堆栈跟踪:
在System.Web.UI.Page.HandleError(例外五)
在System.Web.UI.Page.d__554.MoveNext()
---从先前的位置在那里引发异常---堆栈跟踪结束
时系统. System.Web.UI.Page.AsyncPageEndProcessRequest(IAsyncResult结果
)
中System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar)
上System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务))
在c:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\14a1541c\96dbdee3\App_Web_AsyncTest1.aspx.f9b0821e.cqtg2bnc.0.cs中的ASP.pages_AsyncTest1_aspx.EndProcessRequest(IAsyncResult ar)中: System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)
上System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的第0行
这是我想要执行的C#语法:
namespace CEDS
{
public partial class BBLL : System.Web.UI.UserControl
{
private DataSet DS = new DataSet();
private DataSet DS1 = new DataSet();
private DataSet DS2 = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Page.RegisterAsyncTask(new PageAsyncTask(RunSQLUSP));
}
}
public async System.Threading.Tasks.Task RunSQLUSP()
{
var t1 = GetDataForDropDown1();
var t2 = GetDataForDropDown2();
var t3 = GetDataForDropDown3();
//This line is hit then error is thrown
await System.Threading.Tasks.Task.WhenAll(t1, t2, t3);
//Bind Data to grids/dropdowns
}
}
}
async System.Threading.Tasks.Task<DataSet> GetDataForDropDown1()
{
DS = GetDataForDropDown1();
return DS;
}
async System.Threading.Tasks.Task<DataSet> GetDataForDropDown2()
{
DS2 = GetDataForDropDown2();
return DS2;
}
async System.Threading.Tasks.Task<DataSet> GetDataForDropDown3()
{
DS = GetDataForDropDown3();
return DS;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
请参阅此答案.
您需要在aspx上设置AsyncTimeout属性.异常的原因是您的异步操作超出了我猜测默认的当前AsyncTimeout值.该值应以毫秒为单位.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BBLL.aspx.cs" Inherits="Sample03.Default" Async="true" AsyncTimeout="600000" %> //10 mins
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |