About the Using the ITAControlUpdate interface Sample
[C#]
TAUpdateControlForm.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ESRI.ArcGIS.TrackingAnalyst; namespace TAUpdateControlSample { public partial class TAUpdateControlForm : Form { ITAUpdateControl m_taUpdateCtrl = null; public TAUpdateControlForm() { InitializeComponent(); } private void TAUpdateControlForm_Load(object sender, EventArgs e) { //Get the ITAUpdateControl interface from the TA Display Manager //Store it as a member variable for future use //The DisplayManager is a singleton so the reference should never change ITrackingEnvironment3 taEnv = new TrackingEnvironmentClass(); m_taUpdateCtrl = (ITAUpdateControl)taEnv.DisplayManager; } //Populate the controls with the current settings public void PopulateDialog() { if (m_taUpdateCtrl != null) { checkManualUpdate.Checked = m_taUpdateCtrl.ManualUpdate; txtUpdateRate.Text = Convert.ToString(m_taUpdateCtrl.MaxUpdateRate); cbUpdateMethod.SelectedIndex = (int)m_taUpdateCtrl.UpdateMethod; txtUpdateValue.Text = Convert.ToString(m_taUpdateCtrl.UpdateValue); checkAutoRefresh.Checked = m_taUpdateCtrl.AutoRefresh; txtRefreshRate.Text = Convert.ToString(m_taUpdateCtrl.RefreshRate); cbRefreshType.SelectedIndex = 0; } } //Cause a map refresh //The type of refresh used is determined by the refresh method combo box private void btnRefresh_Click(object sender, EventArgs e) { enumScreenUpdateType eScreenUpdateType = (enumScreenUpdateType)cbRefreshType.SelectedIndex; m_taUpdateCtrl.RefreshDisplay(eScreenUpdateType); } //Output the display statistics to the Statistics text box //The Statistics are returned as an XML string //The XML string should be relatively self-explanatory private void btnStats_Click(object sender, EventArgs e) { txtStatistics.Clear(); txtStatistics.Text = m_taUpdateCtrl.Statistics; } //Apply any setting changes to Display Manager private void btnApply_Click(object sender, EventArgs e) { if (m_taUpdateCtrl != null) { m_taUpdateCtrl.ManualUpdate = checkManualUpdate.Checked; m_taUpdateCtrl.MaxUpdateRate = Convert.ToDouble(txtUpdateRate.Text); m_taUpdateCtrl.UpdateMethod = (enumScreenUpdateThresholdType)cbUpdateMethod.SelectedIndex; m_taUpdateCtrl.UpdateValue = Convert.ToInt32(txtUpdateValue.Text); m_taUpdateCtrl.AutoRefresh = checkAutoRefresh.Checked; m_taUpdateCtrl.RefreshRate = Convert.ToDouble(txtRefreshRate.Text); } } //Just hide the dialog instead of disposing it private void TAUpdateControlForm_FormClosing(object sender, FormClosingEventArgs e) { this.Hide(); e.Cancel = true; } //Disable the options that aren't used when causing the display to update manually private void checkManualUpdate_CheckedChanged(object sender, EventArgs e) { txtUpdateRate.Enabled = !checkManualUpdate.Checked; cbUpdateMethod.Enabled = !checkManualUpdate.Checked; txtUpdateValue.Enabled = !checkManualUpdate.Checked; } //Disable the options that aren't used when the display is in AutoRefresh mode private void checkAutoRefresh_CheckedChanged(object sender, EventArgs e) { txtRefreshRate.Enabled = checkAutoRefresh.Checked; } private void btnHelp_Click(object sender, EventArgs e) { string sHelpDescription = "Description of ITAUpdateControl settings:\n\n" + "Update Settings:\n" + "\tDescription: Determines when to refresh the map if data is actively being received from a server.\n" + "\tManual Update: When enabled Tracking Analyst will not automatically update the display.\n" + "\t\tThe user or another application is responsible for managing display updates\n." + "\tUpdate Rate: The minimum duration between screen refreshes.\n" + "\tUpdate Method: Criteria that triggers an update to occur.\n" + "\t\tEvent-based: An update is triggered when the number of messages specified by the Update Value has been received\n" + "\t\tCPU Usage-based: An update is triggered when the time it takes to draw is less than the specified percentage of the time between updates.\n" + "\tUpdate Value: The threshold value of points or CPU percentage that must be met before an update will occur.\n" + "\t\tThe update rate will prevent a low threshold from causing the map to update too often.\n" + "Refresh Settings:\n" + "\tDescription: Determines when to refresh the map if no data is being received.\n" + "\t\tIf no data is being received then the map will not be updated and time windows and aging would become stale.\n" + "\tAutomatic: When enabled Tracking Analyst will perform maintenance refreshes even if no new data has been received.\n" + "\tRefresh Rate: The maximum duration between screen refreshes/updates.\n" + "Display Refresh:\n" + "\tDescription: Causes a manual screen refresh.\n" + "\tRefresh Method: There are five different methods for refreshing the display.\n" + "\t\tSee RefreshDisplay in the Developer Help for more information on the methods.\n" + "Statistics:\n" + "\tDescription: XML string containing the current TAUpdateControl settings and metrics on previous screen update metrics.\n"; MessageBox.Show(this, sHelpDescription, "TAUpdateControl Description"); } } }
[Visual Basic .NET]
TAUpdateControlForm.vb
Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms Imports ESRI.ArcGIS.TrackingAnalyst Namespace TAUpdateControlSample Public Partial Class TAUpdateControlForm : Inherits Form Private m_taUpdateCtrl As ITAUpdateControl = Nothing Public Sub New() InitializeComponent() End Sub Private Sub TAUpdateControlForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 'Get the ITAUpdateControl interface from the TA Display Manager 'Store it as a member variable for future use 'The DisplayManager is a singleton so the reference should never change Dim taEnv As ITrackingEnvironment3 = New TrackingEnvironmentClass() m_taUpdateCtrl = CType(taEnv.DisplayManager, ITAUpdateControl) End Sub 'Populate the controls with the current settings Public Sub PopulateDialog() If Not m_taUpdateCtrl Is Nothing Then checkManualUpdate.Checked = m_taUpdateCtrl.ManualUpdate txtUpdateRate.Text = Convert.ToString(m_taUpdateCtrl.MaxUpdateRate) cbUpdateMethod.SelectedIndex = CInt(m_taUpdateCtrl.UpdateMethod) txtUpdateValue.Text = Convert.ToString(m_taUpdateCtrl.UpdateValue) checkAutoRefresh.Checked = m_taUpdateCtrl.AutoRefresh txtRefreshRate.Text = Convert.ToString(m_taUpdateCtrl.RefreshRate) cbRefreshType.SelectedIndex = 0 End If End Sub 'Cause a map refresh 'The type of refresh used is determined by the refresh method combo box Private Sub btnRefresh_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRefresh.Click Dim eScreenUpdateType As enumScreenUpdateType = CType(cbRefreshType.SelectedIndex, enumScreenUpdateType) m_taUpdateCtrl.RefreshDisplay(eScreenUpdateType) End Sub 'Output the display statistics to the Statistics text box 'The Statistics are returned as an XML string 'The XML string should be relatively self-explanatory Private Sub btnStats_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnStats.Click txtStatistics.Clear() txtStatistics.Text = m_taUpdateCtrl.Statistics End Sub 'Apply any setting changes to Display Manager Private Sub btnApply_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnApply.Click If Not m_taUpdateCtrl Is Nothing Then m_taUpdateCtrl.ManualUpdate = checkManualUpdate.Checked m_taUpdateCtrl.MaxUpdateRate = Convert.ToDouble(txtUpdateRate.Text) m_taUpdateCtrl.UpdateMethod = CType(cbUpdateMethod.SelectedIndex, enumScreenUpdateThresholdType) m_taUpdateCtrl.UpdateValue = Convert.ToInt32(txtUpdateValue.Text) m_taUpdateCtrl.AutoRefresh = checkAutoRefresh.Checked m_taUpdateCtrl.RefreshRate = Convert.ToDouble(txtRefreshRate.Text) End If End Sub 'Just hide the dialog instead of disposing it Private Sub TAUpdateControlForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles MyBase.FormClosing Me.Hide() e.Cancel = True End Sub 'Disable the options that aren't used when causing the display to update manually Private Sub checkManualUpdate_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles checkManualUpdate.CheckedChanged txtUpdateRate.Enabled = Not checkManualUpdate.Checked cbUpdateMethod.Enabled = Not checkManualUpdate.Checked txtUpdateValue.Enabled = Not checkManualUpdate.Checked End Sub 'Disable the options that aren't used when the display is in AutoRefresh mode Private Sub checkAutoRefresh_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles checkAutoRefresh.CheckedChanged txtRefreshRate.Enabled = checkAutoRefresh.Checked End Sub Private Sub btnHelp_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnHelp.Click Dim sHelpDescription As String = "Description of ITAUpdateControl settings:" & Constants.vbLf + Constants.vbLf & "Update Settings:" & Constants.vbLf + Constants.vbTab & "Description: Determines when to refresh the map if data is actively being received from a server." & Constants.vbLf + Constants.vbTab & "Manual Update: When enabled Tracking Analyst will not automatically update the display." & Constants.vbLf + Constants.vbTab + Constants.vbTab & "The user or another application is responsible for managing display updates" & Constants.vbLf & "." & Constants.vbTab & "Update Rate: The minimum duration between screen refreshes." & Constants.vbLf + Constants.vbTab & "Update Method: Criteria that triggers an update to occur." & Constants.vbLf + Constants.vbTab + Constants.vbTab & "Event-based: An update is triggered when the number of messages specified by the Update Value has been received" & Constants.vbLf + Constants.vbTab + Constants.vbTab & "CPU Usage-based: An update is triggered when the time it takes to draw is less than the specified percentage of the time between updates." & Constants.vbLf + Constants.vbTab & "Update Value: The threshold value of points or CPU percentage that must be met before an update will occur." & Constants.vbLf + Constants.vbTab + Constants.vbTab & "The update rate will prevent a low threshold from causing the map to update too often." & Constants.vbLf & "Refresh Settings:" & Constants.vbLf + Constants.vbTab & "Description: Determines when to refresh the map if no data is being received." & Constants.vbLf + Constants.vbTab + Constants.vbTab & "If no data is being received then the map will not be updated and time windows and aging would become stale." & Constants.vbLf + Constants.vbTab & "Automatic: When enabled Tracking Analyst will perform maintenance refreshes even if no new data has been received." & Constants.vbLf + Constants.vbTab & "Refresh Rate: The maximum duration between screen refreshes/updates." & Constants.vbLf & "Display Refresh:" & Constants.vbLf + Constants.vbTab & "Description: Causes a manual screen refresh." & Constants.vbLf + Constants.vbTab & "Refresh Method: There are five different methods for refreshing the display." & Constants.vbLf + Constants.vbTab + Constants.vbTab & "See RefreshDisplay in the Developer Help for more information on the methods." & Constants.vbLf & "Statistics:" & Constants.vbLf + Constants.vbTab & "Description: XML string containing the current TAUpdateControl settings and metrics on previous screen update metrics." & Constants.vbLf MessageBox.Show(Me, sHelpDescription, "TAUpdateControl Description") End Sub End Class End Namespace