public new RealtimeFeatureClass GetFeatureClass()
Public Shadows Function GetFeatureClass() As RealtimeFeatureClass
Return Value
A FeatureClass.
public new RealtimeFeatureClass GetFeatureClass()
Public Shadows Function GetFeatureClass() As RealtimeFeatureClass
Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
//Must be on QueuedTask! //Must be called on the feature class using (var rfc = streamLayer.GetFeatureClass()) rfc.Truncate();
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 } } } });
await QueuedTask.Run(async () => { //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 (await rc.WaitForRowsAsync(cancel.Token)) { //check for row events while (rc.MoveNext()) { using (var row = rc.Current) { //etc } } } } catch (TaskCanceledException ) { //Handle cancellation as needed } cancel.Dispose(); } });
using (var rfc = streamLayer.GetFeatureClass()) using (var rfc_def = rfc.GetDefinition()) { if (rfc_def.HasTrackIDField()) { //Track aware } }
//Must be on QueuedTask using (var rfc = streamLayer.GetFeatureClass()) using (var rfc_def = rfc.GetDefinition()) { if (rfc_def.HasTrackIDField()) { var fld_name = rfc_def.GetTrackIDField(); } }
Target Platforms: Windows 11, Windows 10