Estoy ejecutando un tiempo de funcionamiento como tarea de fondo en mi asp.net aplicación. Antes de que la tarea se complete el hilo principal de las salidas (quiero que sea así, ya que si uso la palabra clave await y hacer hilo principal esperar hasta el fondo de la tarea completa, me da error de proxy con mensaje
Error De Proxy
El servidor proxy recibió una respuesta no válida de un servidor ascendente desde el fondo de la tarea es demasiado largo
Pero una vez después de la terminación de la tarea ni yo soy capaz de actualizar la página redirigir a la misma página o ni yo soy capaz de reemplazar la interfaz de usuario. Hay alguna forma de actualización de la interfaz de usuario después de que el hilo principal se completa su ejecución.
Mi código es este:
protected void btnImport_Click(object sender, EventArgs e)
{
var task = ImportThread();
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
DisplayError("Import failed");
}
private async Task<bool> ImportThread()
{
try
{
var success = await Task<bool>.Run(() => new Manager().Import().ConfigureAwait(false);
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
{
DisplayError("Import failed");
}
return true;
}
El de arriba async tarea le espera al método por debajo de la cual está presente en otra clase.
public bool Import()
{
// some operations here
return true;
}
Después de este método se completa el retorno del control de espaldas a ImportThread()
pero el código escrito para anular la interfaz de usuario no es la actualización de la interfaz de usuario. Necesito actualizar la interfaz de usuario con el estado de importación. Y también de ImportThread
el control no va a regresar a evento de clic de botón método también.
Por favor me ayudan con cualquier forma de actualización de la interfaz de usuario el estado de la importación.
Nota: he intentado utilizar Redirect.Response
en ImportThread()
para actualizar la página, pero que no funcionó