Do especifica que algunos efectos secundarios tendrán lugar cuando se ejecuten, y devuelve la secuencia con efectos secundarios.
Ejecutar enumera la secuencia y devuelve vacío.
Piénsalo de esta manera: "etiqueta" la secuencia con efectos secundarios. Esos efectos secundarios tendrán lugar solo cuando se enumere la secuencia. Devuelve la nueva secuencia con efectos secundarios.
// Example of .Do
var elements = new[] { 1, 2, 3 };
var elementsWithSideEffects = elements.Do(e => MessageBox.Show(e)); // No Message Boxes shown yet!
elementsWithSideEffects.Run(); // 3 message boxes shown
Ejecutar, por el contrario, enumera la secuencia: Ejecutar(), u opcionalmente se une efectos secundarios, a continuación, enumera la secuencia: Ejecutar (acción)
// Example of .Run with its own side effects:
var elements = new[] { 1, 2, 3 };
elements.Run(e => MessageBox.Show(e)); // 3 Message Boxes shown.
Jonathan, ¿alguna de las respuestas lo ayudó? Si es así, por favor marque como respuesta. ¡Gracias! –
Para cualquiera que se pregunte, el equivalente de "Ejecutar" en las compilaciones de Rx más nuevas es el método de extensión Observable.Wait(). Este método bloquea la ejecución hasta que se reciba el valor final, o una excepción, de la fuente observable. Invocarlo provoca una suscripción. – thefellow3j