ArcGIS Pro 2.7 API Reference Guide
Subscribe Method (StreamLayer)
Example 

ArcGIS.Desktop.Mapping Namespace > StreamLayer Class : Subscribe Method
A null query filter will cause all rows that become available to be retrieved.
If set to true, all the entries in ArcGIS.Core.Data.Realtime.RealtimeCursor will reference the most current row returned by ArcGIS.Core.Data.Realtime.RealtimeCursor.Current. To ensure all the entries in ArcGIS.Core.Data.Realtime.RealtimeCursor remain unique, set useRecyclingCursor to false. The default is true.
Subscribe to receive row events. This method must be called on the MCT. Use QueuedTask.Run.
Syntax

Parameters

queryFilter
A null query filter will cause all rows that become available to be retrieved.
useRecyclingCursor
If set to true, all the entries in ArcGIS.Core.Data.Realtime.RealtimeCursor will reference the most current row returned by ArcGIS.Core.Data.Realtime.RealtimeCursor.Current. To ensure all the entries in ArcGIS.Core.Data.Realtime.RealtimeCursor remain unique, set useRecyclingCursor to false. The default is true.

Return Value

A ArcGIS.Core.Data.Realtime.RealtimeCursor that encapsulates the retrieved rows, as well as provides facilities to wait for new row events.
Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Stream Layer was disconnected from its underlying feature class.
A geodatabase-related exception has occurred.
Remarks
Use ArcGIS.Core.Data.Realtime.RealtimeFeatureClass.Subscribe to subscribe on any thread. As opposed to SearchAndSubscribe, this method does not perform a Search before subscribing. As a consequence, the returned ArcGIS.Core.Data.Realtime.RealtimeCursor will only iterate over rows that became available immediately after the execution of this method. If no query filter is set, all rows that become available will be retrieved.
Example
//Note: with feature class we can also use a System Task to subscribe and
//process rows
await QueuedTask.Run(async () =>
{
  // or var rfc = realtimeDatastore.OpenTable(name) as RealtimeFeatureClass
  using (var rfc = streamLayer.GetFeatureClass())
  {
    //non-recycling cursor - 2nd param "false"
    //subscribe, pre-existing rows are not searched
    using (var rc = rfc.Subscribe(qfilter, false))
    {
      SpatialQueryFilter spatialFilter = new SpatialQueryFilter();
      //waiting for new features to be streamed
      //default is no cancellation
      while (await rc.WaitForRowsAsync())
      {
        while (rc.MoveNext())
        {
          using (var row = rc.Current)
          {
            switch (row.GetRowSource())
            {
              case RealtimeRowSource.EventInsert:
                //getting geometry from new events as they arrive
                Polygon poly = ((RealtimeFeature)row).GetShape() as Polygon;

                //using the geometry to select features from another feature layer
                spatialFilter.FilterGeometry = poly;//project poly if needed...
                countyFeatureLayer.Select(spatialFilter);
                continue;
              default:
                continue;
            }
          }                  
        }
      }
    }//row cursor is disposed. row cursor is unsubscribed
  }
});
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

StreamLayer Class
StreamLayer Members