ArcGIS Pro 2.7 API Reference Guide
SearchAndSubscribe Method (RealtimeFeatureClass)
Example 

ArcGIS.Core.Data.Realtime Namespace > RealtimeFeatureClass Class : SearchAndSubscribe Method
A null query filter will search all rows and all rows that become available will be retrieved.
If set to true, all the entries in RealtimeCursor will reference the most current row returned by RealtimeCursor.Current. To ensure all the entries in RealtimeCursor remain unique, set useRecyclingCursor to false. The default is true.
Searches the feature class for existing rows using the query criteria and then subscribes to receive row events. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
Public Function SearchAndSubscribe( _
   ByVal queryFilter As QueryFilter, _
   ByVal useRecyclingCursor As Boolean _
) As RealtimeCursor

Parameters

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

Return Value

A RealtimeCursor that encapsulates the retrieved rows, as well as provides facilities to wait for new row events.
Exceptions
ExceptionDescription
A geodatabase-related exception has occurred.
Remarks
This method is thread-safe and it can be called on any thread. If the cursor is disposed or in the process of being disposed when this method is called it will result in undefined behavior. This operation is atomic. It is guaranteed that the returned RealtimeCursor will correctly reflect any insert or delete operations that occured at any time during the exection of this method. If no query filter is set, all pre-existing rows will be searched and all rows that become available after subscribing will be retrieved.
Example
Search existing data and subscribe for streaming data.
await QueuedTask.Run(async () =>
{
  //query filter can be null to search and retrieve all rows
  //true means recycling cursor
  using (var rc = streamLayer.SearchAndSubscribe(qfilter, true))
  {
    //waiting for new features to be streamed
    //default is no cancellation
    while (await rc.WaitForRowsAsync())
    {
      while (rc.MoveNext())
      {
        using (var row = rc.Current)
        {
          //determine the origin of the row event
          switch (row.GetRowSource())
          {
            case RealtimeRowSource.PreExisting:
              //pre-existing row at the time of subscribe
              continue;
            case RealtimeRowSource.EventInsert:
              //row was inserted after subscribe
              continue;
            case RealtimeRowSource.EventDelete:
              //row was deleted after subscribe
              continue;
          }
        }
      }
    }
  }//row cursor is disposed. row cursor is unsubscribed

  //....or....
  //Use the feature class instead of the layer
  using(var rfc = streamLayer.GetFeatureClass())
  {
    //non-recycling cursor - 2nd param "false"
    using(var rc = rfc.SearchAndSubscribe(qfilter, false))
    {
      //waiting for new features to be streamed
      //default is no cancellation
      while (await rc.WaitForRowsAsync())
      {
        //etc
      }
    }
  }
});
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

RealtimeFeatureClass Class
RealtimeFeatureClass Members