在调试中,出现这个错误的原因,我在网上查了很多。大体上总结一下是: 两个或多个线程操作一个控件所引起的问题。
在WPF中,UI分创建线程和访问线程。所以需要用委托机制来解决。
如果要在另一个线程中修改控件的Text属性(例如:ListBox控件类型的 lbConnected),如果直接写:lbStatus.Items.Add(str); 的话就会出现上述错误。
解决如下:
添加一个 AddStringToListBox 函数:
private delegate void AddStringToListBoxDelegate(string str);
/// <summary>
/// 在ListBox中追加状态信息
/// </summary>
/// <param name="str">要追加的信息</param>
private void AddStringToListBox(string str)
{
if (!lbStatus.Dispatcher.CheckAccess())
{
AddStringToListBoxDelegate d = AddStringToListBox;
lbStatus.Dispatcher.Invoke(d, str);
}
else
{
lb