without understanding run method espaƱol ejemplos create await async asynchronous async-await parallel.foreach

asynchronous - understanding - task.run c#



Async/await y paralelo en C# (1)

¿Cuándo debería usar async / await y cuándo debería usar parallel.foreach en C #? ¿Son paralelos y asincrónicos / aguardan el mismo propósito? ¿Cuáles son las diferencias en ellos?


async / await es sobre asincronía , mientras que Parallel.ForEach trata sobre el paralelismo . Son conceptos relacionados, pero no son lo mismo.

Parallel.ForEach se usa cuando desea ejecutar la misma operación en todos los elementos de una colección, en paralelo, bloqueando el hilo actual hasta que todas las operaciones se hayan completado.

async / await se usa cuando la operación actual no puede avanzar más hasta que una operación asincrónica particular se haya completado, pero no desea bloquear el hilo actual. Esto es particularmente útil en dos situaciones:

  • Escribir código que básicamente inicia varias operaciones asíncronas, una después de otra, en el hilo de la interfaz de usuario, accediendo brevemente a la interfaz de usuario entre las operaciones. (Es más general que eso, pero es un ejemplo simple). No desea bloquear el hilo de la interfaz de usuario, pero manejar todas esas operaciones asincrónicas es una molestia.
  • Manejar muchas operaciones de larga duración a la vez, por ejemplo, en un servidor web. Cada solicitud individual puede tomar mucho tiempo debido a que se llama a otro servicio web, bases de datos, etc., pero no se desea tener un hilo por solicitud, ya que los hilos son un recurso relativamente caro.

Puede combinar el paralelismo y la asincronía iniciando una nueva tarea que llamará a Parallel.ForEach y luego esperará esa tarea. (Solo como un ejemplo)