Articles of system.reactive

come usare yield per restituire la collezione di Item in parallel block o Task

Sto cercando aiuto su come utilizzare la parola chiave yield per restituire IEnumberable in blocchi paralleli o blocchi di attività. Di seguito è riportato lo pseudo codice public IEnumerable<List> ReadFile( ) { foreach (string filepath in lstOfFiles) { var stream = new FileStream(filepath , FileMode.Open, FileAccess.Read); foreach (var item in ReadStream(stream)) yield return item; //where […]

Come cancellare una sequenza osservabile

Ho un semplice IObservable che funge da generatore di impulsi ogni 500ms: var pulses = Observable.GenerateWithTime(0, i => true, i => i + 1, i => i, i => TimeSpan.FromMilliseconds(500)) E ho una CancellationTokenSource (che viene utilizzata per cancellare altri lavori in corso contemporaneamente). Come posso usare la sorgente del token di cancellazione per cancellare […]

Converti eventi senza EventArgs usando Observable.FromEvent

Ho difficoltà a convertire il seguente evento in un IObservable : public delegate void _dispSolutionEvents_OpenedEventHandler(); event _dispSolutionEvents_OpenedEventHandler Opened; L’evento proviene da una biblioteca, quindi non posso cambiarlo. Il sovraccarico di IObservable.FromEvent che dovrebbe farlo ha la seguente firma: public static IObservable FromEvent ( Action addHandler , Action removeHandler ) Così ho provato a convertire l’evento […]

Come vincolare la concorrenza nel modo giusto in Rx.NET

Per favore, osserva il seguente frammento di codice: var result = await GetSource(1000).SelectMany(s => getResultAsync(s).ToObservable()).ToList(); Il problema con questo codice è che getResultAsync viene eseguito contemporaneamente in modo non vincolato. Quale potrebbe non essere quello che vogliamo in certi casi. Supponiamo di voler limitare la sua concorrenza a un massimo di 10 invocazioni simultanee. Qual […]

Perché il buffer Rx esegue continuamente il metodo quando il buffer non contiene elementi?

Ho un Rx Observable che funge da buffer. In questo momento esegue il metodo in Iscriviti o quando riceve 10 elementi, o dopo 100 millisecondi, a seconda dell’evento che si verifica per primo. Ho notato che il mio metodo viene chiamato continuamente ogni 100 ms, anche quando non ci sono elementi nel buffer, il che […]

Reattivo: l’ultimo valore che deve essere ricevuto da IObservable

So che quanto segue è una chiamata bloccante e restituirà il primo valore nella sequenza osservabile: var result = myObservable.First(); A seconda del tipo di argomento che uso, ciò ha implicazioni diverse: Subject – First () bloccherà fino a quando non viene chiamato OnNext (), il che significa che alla fine questo sarà l’ultimo valore […]

Test delle unità per un evento utilizzando le estensioni reattive

Sto usando Reactive Extensions per. NET (Rx) per esporre eventi come IObservable . Voglio creare un test unitario in cui dichiaro che un particolare evento è stato licenziato. Ecco una versione semplificata della class che voglio testare: public sealed class ClassUnderTest : IDisposable { Subject subject = new Subject(); public IObservable SomethingHappened { get { […]

Operatore Rx a sequenze distinte

IMPORTANTE : per una descrizione dei risultati e qualche altro dettaglio, si prega di dare anche un’occhiata alla mia risposta Devo raggruppare e filtrare una sequenza di oggetti / eventi che di solito vengono replicati, inserendoli con un intervallo TimeSpan. Cerco di spiegarlo meglio con una sorta di diagrammi di marmo: XXXXXYYYZZZZXXYZZ produrrebbe X—Y—Z—X—Y—Z dove […]

Come leggere file interleaved contemporaneamente utilizzando estensioni reattive

Sono nuovo per le estensioni reattive e mi piacerebbe usarlo (in c #) per leggere un file che contiene diversi flussi che sono interlacciati. Fondamentalmente il file è nel formato ABCDABCDABCD… Preferirei leggere il file in modo sequenziale e separare i flussi (cioè AAA.. , BBB.. , ecc.) Ed elaborare ogni stream in parallelo, utilizzando […]

Reattivo: cercando di capire come funziona il sobject

Cercando di capire come il Subject , ReplaySubject e altri lavori. Ecco un esempio: (Il sobject è osservabile e osservatore) public IObservable CreateObservable() { Subject subj = new Subject(); // case 1 ReplaySubject subj = new ReplaySubject(); // case 2 Random rnd = new Random(); int maxValue = rnd.Next(20); Trace.TraceInformation(“Max value is: ” + maxValue.ToString()); […]