ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / StreamLayer Class / GetFeatureClass Method
Example

In This Topic
    GetFeatureClass Method (StreamLayer)
    In This Topic
    Returns the underlying FeatureClass. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Shadows Function GetFeatureClass() As RealtimeFeatureClass
    public new RealtimeFeatureClass GetFeatureClass()

    Return Value

    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Example
    Delete all current and previous observations
    {
      // Note: call within QueuedTask.Run()
      {
        //Must be called on the feature class
        using var rfc = streamLayer.GetFeatureClass();
        rfc.Truncate();
      }
    }
    Search And Subscribe for Streaming Data
    {
      // Note: call within QueuedTask.Run()
      {
        //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 (rc.WaitForRowsAsync().Result)
          {
            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 (RealtimeCursor rc = rfc.SearchAndSubscribe(qfilter, false))
        {
          //waiting for new features to be streamed
          //default is no cancellation
          while (rc.WaitForRowsAsync().Result)
          {
            //etc
          }
        }
      }
    }
    Search And Subscribe With Cancellation
    {
      // Note: call within QueuedTask.Run()
      {
        //Recycling cursor - 2nd param "true"
        //or streamLayer.Subscribe(qfilter, true) to just subscribe
        using (var rc = streamLayer.SearchAndSubscribe(qfilter, true))
        {
          //auto-cancel after 20 seconds
          var cancel = new CancellationTokenSource(new TimeSpan(0, 0, 20));
          //catch TaskCanceledException
          try
          {
            while (rc.WaitForRowsAsync(cancel.Token).Result)
            {
              //check for row events
              while (rc.MoveNext())
              {
                using var row = rc.Current;
                //etc
              }
            }
          }
          catch (TaskCanceledException)
          {
            //Handle cancellation as needed
          }
          cancel.Dispose();
        }
      }
    }
    Check the Realtime Feature Class is Track Aware
    {
      // Note: call within QueuedTask.Run()
      {
        using var rfc = streamLayer.GetFeatureClass();
        using var rfc_def = rfc.GetDefinition();
        if (rfc_def.HasTrackIDField())
        {
          //Track aware
        }
      }
    }
    Get the Track Id Field from the Realtime Feature class
    {
      // Note: call within QueuedTask.Run()
      {
        using (var rfc = streamLayer.GetFeatureClass())
        using (var rfc_def = rfc.GetDefinition())
        {
          if (rfc_def.HasTrackIDField())
          {
            var fld_name = rfc_def.GetTrackIDField();
    
          }
        }
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also