2016-03-10 86 views
4

如果我只是運行其中一個異步事件,則所有事情都會按照它的原樣執行。但是,當我加入所有3個事件時,我從我的語法中得到(從我所收集的)暫停。這是一個完整的堆棧跟蹤,希望能夠提供幫助。使用異步時超時


System.Web.HttpUnhandledException(0X80004005):類型System.Web.HttpUnhandledException'引發的異常。 ---> System.NullReferenceException:對象引用未設置爲對象的實例。在System.Web.UI.Page.d__554.MoveNext()
System.Web.UI.Page.HandleError(Exception E)
在System.Web.UI.Page.d__554.MoveNext()
---從先前位置棧跟蹤其中拋出異常---
在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess結束(任務task) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務task)
在System.Web.TaskAsyncHelper.EndTask(IAsyncResult的AR)
在系統.Web.UI.Page.AsyncPageEndProcessRequest(IAsyncResult result)
at ASP.pages_AsyncTest1_aspx.EndProcessRequest(IAsyncResult ar)in c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ vs \ 14a1541c \ 96dbdee3 \ App_Web_AsyncTest1.aspx.f9b0821e.cqtg2bnc.0.cs:行0
在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步驟,布爾&同步完成)
異常類型:System.Web.HttpUnhandledException
消息:拋出異常類型'System.Web.HttpUnhandledException'。
堆棧跟蹤:
在System.Web.UI.Page.HandleError(例外五)
在System.Web.UI.Page.d__554.MoveNext()
---從先前的位置,其中異常堆棧跟蹤的結尾被拋出---
在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務task)
在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務task)
在System.Web.TaskAsyncHelper.EndTask(IAsyncResult的AR )
at System.Web.UI.Page.AsyncPageEndProcessRequest(IAsyncResult result)
at ASP.pages_AsyncTest1_aspx.EndProcessRequest(IAsyncResult ar)in c:\ Windows \ Microsoft.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.IExecutionStep.Execute()
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步驟,布爾& completedSynchronously)線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;   
} 

回答

5

請參閱answer

您需要在aspx上設置AsyncTimeout屬性。異常的原因是您的異步​​操作超出了我猜測默認情況下的當前AsyncTimeout值。該值應該以毫秒爲單位。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BBLL.aspx.cs" Inherits="Sample03.Default" Async="true" AsyncTimeout="600000" %> //10 mins 
+0

我在超時中添加建議,但現在它會引發一個NullReference異常? –

+0

哪一行引發異常? –

+0

在上面標記的同一行上。等待。 –