Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 31433|Respuesta: 5

[Fuente] .net/c# Clase de tarea con async/await

[Copiar enlace]
Publicado en 20/10/2017 22:32:17 | | |
Clase de tarea

La clase Task es una abstracción de operación asíncrona proporcionada después de .NET 4.0, con la ruta completa hacia System.Threading.Tasks.Task.

La clase Task se utiliza para representar operaciones asíncronas sin valor de retorno, y para operaciones asíncronas con valores de retorno, debe usarse la subclase Tarea de la clase Tarea<TResult>.
Las tareas creadas por la clase Task se añaden al grupo de hilos.

Los <TResult>principales constructores de la clase Tarea/Tarea son los siguientes:


Una vez creada, la tarea puede iniciarse usando el método Start():


En el desarrollo real, el método estático Run() de la clase Task o el método miembro StartNew() de la clase fábrica TaskFactory se usan con mayor frecuencia para crear y comenzar nuevas tareas.

Algunos métodos comunes en la clase Task:


palabra clave async/await

C# 5.0 introdujo las palabras clave async y await, que ofrecían mejor soporte para la concurrencia a nivel de idioma.

El asíncrono se utiliza para marcar métodos asíncronos:
La palabra clave asíncrona es una palabra clave contextual y solo se tratará como una palabra clave al modificar un método y Lambda, y se tratará como un identificador en otras áreas.
La palabra clave asíncrona puede marcar métodos estáticos, pero no puntos de entrada (métodos Main()).
El valor de retorno del método etiquetado con async debe ser <TResult>uno de Tarea, Tarea o Nul.
await se utiliza para esperar el resultado del método asincrónico:
La palabra clave await es igualmente contextual y solo se considera una palabra clave en el método etiquetado asincrónico.
La palabra clave await puede usarse antes del método asíncrono y Task, y <TResult>Task, para esperar al final de la ejecución asíncrona.
Una estructura sencilla de método asíncrono es la siguiente:
No es que el método esté marcado con la palabra clave asincrónica, es un método asincrónico, y las sentencias que aparecen directamente dentro del método asincrónico también se ejecutan de forma síncronaEl contenido ejecutado de forma asíncrona debe ejecutarse usando la clase Task
De hecho, un método asíncrono que no contiene ninguna instrucción await se ejecutará de forma síncrona, momento en el que el compilador dará una advertencia.

Ejemplo sencillo, usando async/await para mostrar contenido simultáneamente en pantalla:

Salida: (Mono 4.4.0 y ArchLinux x64)

No es difícil ver en el programa anterior que en el método asíncrono etiquetado con palabra clave asíncrona, el código antes de usar await se ejecuta de forma sincrónica, y tras llamar await, el código restante se ejecuta asíncronamente en un hilo separado.





Anterior:fsadf{:1_2:}
Próximo:RestSharp a. NET(C#) HTTP componente de clase auxiliar
Publicado en 1/11/2017 19:57:12 |
Mira, mira, mira
Publicado en 29/1/2019 9:37:53 |
Busqué mucho tiempo en Baidu #Invocación de tarea asíncrona()Me encontré de pieEl método anterior utiliza la palabra clave async para devolver un método Invoke de la clase Task, que también resuelve el problema del hilo, ¿qué significa toda esta función?
Publicado en 29/1/2019 21:14:36 |
Esto es realmente algo bueno, y escribiré un intercambio así cuando tenga tiempo
Publicado en 15/2/2019 16:17:22 |
El resultado de salida no puede ver claramente el efecto de la ejecución asincrónica, y la entrada asíncrona debe ser simultánea
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com