我有一个通过套接字连接的硬件设备。
我需要每5秒检查一次硬件设备是否连接,这可以通过复选框来指示。
我已经实现了一个函数:
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;
}
}
但是当我运行应用程序时,它会抛出错误:
The calling thread cannot access this object because a different thread owns it.
我研究了解了 Dispatcher.Invoke,但是无法在我的代码中实现它。