CWPF 跨线程访问控件
在C#的WPF开发中,跨线程访问控件是要报错的,这是基于线程安全考虑的。担有的时候我们需要实现这个功能,如何做呢?请参考
在C#的WPF开发中,跨线程访问控件是要报错的,这是基于线程安全考虑的。担有的时候我们需要实现这个功能,如何做呢?请参考如下代码:
……
//定义事件
public delegate void MediaStop(object sender, EventArgs e);
public event MediaStop OnMediaStop;
……
private Button PlayRestore = new Button();
……
//监听事件
formLEDScreen_vlc.OnMediaStop += FormLEDScreen_vlc_OnMediaStop;
private void FormLEDScreen_vlc_OnMediaStop(object sender, EventArgs e)
{
if (formLEDScreen_vlc.isMediaStop)
{
//调用函数处理按键提示修改
SetButtnonContent(PlayRestore,"播出");
}
}
private void SetButtnonContent(Button btn, string str)
{
if (!Dispatcher.CheckAccess())//判断是否是被其他线程调用
{
Dispatcher.Invoke(() => SetButtnonContent(btn, str));
return;
}
btn.Content = str;
}