Lifecycle and duplicate prevention
Start, stop, pause and resume are explicit and cheap. Pausing keeps the camera open, so resuming is instant; stopping releases the track and turns the camera indicator off.
Duplicate suppression
Suppression is keyed on the value and the symbology together, so moving the camera to a different barcode reports immediately instead of waiting out the window. Holding the same one in view keeps it suppressed rather than re-firing on a timer.
Set it to zero and the scanner reports every frame that decodes, which is the right setting for measuring throughput.
Scan counters
Disposal
The component implements IAsyncDisposable. Navigating away cancels the
frame loop, stops every media track, releases the JavaScript session and returns
the pooled buffers. Nothing keeps the camera alive after the component is gone.