From a88100a929403fad017b27892b0764447b4393d0 Mon Sep 17 00:00:00 2001 From: Salman Alfarisyi Date: Tue, 28 Jul 2026 15:08:35 +0200 Subject: [PATCH] use the correct server listener protocol to get session data. --- .../csharp/live-data/poll-live-samples.cs | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/snippets/csharp/live-data/poll-live-samples.cs b/snippets/csharp/live-data/poll-live-samples.cs index a37c89e..2826cc1 100644 --- a/snippets/csharp/live-data/poll-live-samples.cs +++ b/snippets/csharp/live-data/poll-live-samples.cs @@ -50,15 +50,33 @@ } } +var sessionSummary = sessionManager.FindSummaryBy(sessionKey, connectionString); + var pollCount = 0; + +// --- Load the session with server listener so we can pick up live data --- +using var clientSession = sessionManager.Load(sessionSummary.Key, sessionSummary.GetConnectionString()); +var session = clientSession.Session; + +using var pda = session.CreateParameterDataAccess(paramId); +var lastEndTime = long.MinValue; while (!cts.Token.IsCancellationRequested) { - // --- Reload session each cycle to pick up newly flushed data --- - using var clientSession = sessionManager.Load(sessionKey, connectionString); - var session = clientSession.Session; + try { await Task.Delay(2000, cts.Token); } + catch (OperationCanceledException) { break; } + + // --- Check if the end time is updated. --- + var endTime = session.EndTime; + if (lastEndTime >= endTime) + { + // --- End time has not been changed. No new data. --- + Console.WriteLine($" Poll {++pollCount}: no data yet"); + continue; + } - using var pda = session.CreateParameterDataAccess(paramId); - pda.GoTo(long.MaxValue); + // --- End time has changed. Update lastEndTime and fetch the latest samples. --- + lastEndTime = endTime; + pda.GoTo(lastEndTime); var samples = pda.GetNextSamples(5, StepDirection.Reverse); if (samples.SampleCount > 0) @@ -71,9 +89,6 @@ { Console.WriteLine($" Poll {++pollCount}: no data yet"); } - - try { await Task.Delay(2000, cts.Token); } - catch (OperationCanceledException) { break; } } Console.WriteLine($"\nPolling complete — {pollCount} polls.");