I have hardware which is connected through socket.
I have to check whether the hardware is connected or not every 5 seconds, which is indicated by a checkbox.
I have implemented a function:
private static System.Timers.Timer aTimer;
public MainWindow()
{
    InitializeComponent();
    client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);
    aTimer = new System.Timers.Timer();
    aTimer.AutoReset = true;
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    aTimer.Interval = 2000;
    aTimer.Enabled = true;
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
    if (client.Connected == true)
    {
        Console.WriteLine("Not Connected");
        CheckBox.IsChecked = false;
    }
    else
    {
        Console.WriteLine("Connected");
        CheckBox.IsChecked = false;
    }
}
But when I am running the application it is throwing error:
The calling thread cannot access this object because a different thread owns it.
I researched and learned about Dispatcher.Invoke, but not been able to implement that in my code.
 
     
     
     
     
    