一,VS中用C#监听变量
VS中监听AGVObject的变量Bitmap bitmap,当bitmap变化时前端界面的pictureBox1控件随之发生更改。
public class AGVObject
{
public static event Action<Bitmap> BitmapChanged;
public Bitmap bitmap;
public void SetImage(Bitmap b)
{
bitmap=b;
BitmapChanged?.Invoke(bitmap);
}
}
public partial class frmMonitor : BaseForm
{
public frmMonitor()
{
InitializeComponent();
AGVObject.BitmapChanged += OnBitmapChanged;
}
private void OnBitmapChanged(Bitmap bitmap)
{
if (this.InvokeRequired)
{
this.Invoke(new Action<Bitmap>(OnBitmapChanged), new object[] { bitmap });
}
else
{
pictureBox1.Image = bitmap;
}
}
}
以下这句代码是为了避免出现线程间错误(System.InvalidOperationException:“线程间操作无效: 从不是创建控件“pictureBox1”的线程访问它。” )
if (this.InvokeRequired)
{
this.Invoke(new Action<Bitmap>(OnBitmapChanged), new object[] { bitmap });
}