上位机项目开发过程,应该不少遇见界面同步实时刷新的情况,设备的运行情况以及设备数据的实时更新,应用场景非常之多。
那么这个时候,我们就可以用到C#语言中的一些关键功能来实现,比如事件,委托,有些定时器,甚至一些情况下还可以使用全局变量等等。诸如此类,但是也得看场景使用,所谓没有更好,只有更适合。
C#自定义事件 Action
public static event Action<int> OntimeSetData; public static void SetOntimeData() { //Thread th = new Thread(new ThreadStart(() => //{ // while (true) // { // for (int i = 0; i < 10; i++) // { // OntimeSetData?.Invoke(10 + i); // Thread.Sleep(1000); // } // } //})); //th.Start(); Task.Run(() => { while (true) { for (int i = 0; i < 10; i++) { OntimeSetData?.Invoke(10 + i); Thread.Sleep(1000); } } }).Start(); }
数据展示界面进行事件的初始化订阅,以及通过委托实时的更新控件的值
public FrmParent() { InitializeComponent(); ThreadMethodTxt.OntimeSetData += SetText; } public void SetText(int values) { this.BeginInvoke(new Action(() => { this.textBox2.Text = values.ToString(); })); }
取消订阅
private void button2_Click(object sender, EventArgs e) { ThreadMethodTxt.SetOntimeData(); } private void button1_Click(object sender, EventArgs e) { ThreadMethodTxt.OntimeSetData -= SetText; }