c# - page - mvc async operations
Tiempo de espera al usar Async (1)
Consulte esta respuesta .
Debe establecer la propiedad AsyncTimeout en su aspx. El motivo de la excepción es que su operación asíncrona excedió el valor actual de AsyncTimeout, que supongo que está predeterminado. El valor debe ser en milisegundos.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BBLL.aspx.cs" Inherits="Sample03.Default" Async="true" AsyncTimeout="600000" %> //10 mins
Si solo ejecuto uno de los eventos asíncronos, todo se ejecuta exactamente como debería. Sin embargo, cuando agrego los 3 de mis eventos, obtengo (por lo que deduzco) un tiempo de espera de mi sintaxis. Aquí hay un stack-trace completo que con suerte ayudará.
System.Web.HttpUnhandledException (0x80004005): se lanzó la excepción de tipo ''System.Web.HttpUnhandledException''. ---> System.NullReferenceException: referencia de objeto no establecida en una instancia de un objeto ...
en System.Web.UI.Page.d__554.MoveNext ()
en System.Web.UI.Page.HandleError (Exception e)
en System.Web.UI.Page.d__554.MoveNext ()
--- El final del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción ---
en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Tarea de tarea) en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tarea de tarea)
en System.Web.TaskAsyncHelper.EndTask (IAsyncResult ar)
en System.Web.UI.Page.AsyncPageEndProcessRequest (resultado de IAsyncResult)
en ASP.pages_AsyncTest1_aspx.EndProcessRequest (IAsyncResult ar) en c: / Windows / Microsoft.NET / Framework / v4.0.30319 / Temporal ASP.NET Files / vs / 14a1541c / 96dbdee3 / App_Web_AsyncTest1.aspx.f9b0821e.cqtg2bnc.0.cs: línea 0
en System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
en System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, Boolean & completedSynchronously)
Tipo de excepción: System.Web.HttpUnhandledException
Mensaje: Excepción de tipo ''System.Web.HttpUnhandledException'' fue lanzado.
Stacktrace:
en System.Web.UI.Page.HandleError (Exception e)
en System.Web.UI.Page.d__554.MoveNext ()
--- El final del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción ---
en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Tarea Tarea)
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Tarea Tarea)
en System.Web.TaskAsyncHelper.EndTask (IAsyncResult ar)
en System.Web.UI.Page.AsyncPageEndProcessRequest (resultado de IAsyncResult)
en ASP.pages_AsyncTest1_aspx.EndProcessRequest (IAsyncResult ar) en c: / Windows / Microsoft.NET / Framework / v4.0.30319 / Temporal ASP.NET Files / vs / 14a1541c / 96dbdee3 / App_Web_AsyncTest1.aspx.f9b0821e.cqtg2bnc.0.cs: línea 0
en System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
en System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, Boolean & completedSynchronously)
Y aquí está la sintaxis de C # que quiero ejecutar:
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;
}