C#多个对象共享对布尔值的引用

C#多个对象共享对布尔值的引用,c#,reference,led,C#,Reference,Led,我正在试图找到获得以下行为的最佳方法 我有一个LED类,它有一个GUI LED控件,该控件有几个属性,包括一个“On”布尔值。目前,我创建了许多新的LED对象,并将它们放置在一个表格picturebox周围。我想让它们在布尔值上引用相同的值,这样我就可以更改变量一次,并让它们更新它们的状态。我在考虑如何创建一个包装器类,并将引用传递给单个对象,但这不允许我单独更改屏幕上每个LED对象的位置 我认为这可以通过一个所有LED对象都订阅的事件来实现,但这似乎比指向内存中相同的空间要慢。我目前在一个列表

我正在试图找到获得以下行为的最佳方法

我有一个LED类,它有一个GUI LED控件,该控件有几个属性,包括一个“On”布尔值。目前,我创建了许多新的LED对象,并将它们放置在一个表格picturebox周围。我想让它们在布尔值上引用相同的值,这样我就可以更改变量一次,并让它们更新它们的状态。我在考虑如何创建一个包装器类,并将引用传递给单个对象,但这不允许我单独更改屏幕上每个LED对象的位置

我认为这可以通过一个所有LED对象都订阅的事件来实现,但这似乎比指向内存中相同的空间要慢。我目前在一个列表中包含所有LED对象,并枚举每个对象,更新On属性,这实际上太慢了。我正在定时器中以50毫秒的速度更新LED状态


任何帮助都将不胜感激。

没有答案,但不让我评论

我在想这样的事情可以做我想做的,但它不起作用。也许这表明了我希望会发生什么

using System;
using System.Windows.Forms;

namespace FormTestApplication
{
    public partial class Form1 : Form
    {
        private Boolean state = false;  //global variable that updates everyone.

        public Form1()
        {
            InitializeComponent();

            MyCheck my1 = new MyCheck(ref state);
            my1.Top = 100;
            my1.Left = 100;
            MyCheck my2 = new MyCheck(ref state);
            my2.Top = 120;
            my2.Left = 100;
            MyCheck my3 = new MyCheck(ref state);
            my3.Top = 140;
            my3.Left = 100;

            this.Controls.Add(my1);
            this.Controls.Add(my2);
            this.Controls.Add(my3);

            state = true;  //changing this one variable should causes all 3 to update to checked.  This does not work.

        }
    }

    public class MyCheck : CheckBox
    {

        private Boolean status
        {
            get { return this.Checked; }
            set
            {
                this.Checked = value;
                Invalidate();
            }
        }

        public MyCheck(ref Boolean b)
        {
            status =  b;
        }



    }
}
我认为这样做是必要的,因为在foreach循环中设置所有实例并不能在下一个50毫秒周期发生之前更新它们。此行为会导致屏幕上的LED部分更新,但不会全部更新


我设想一个传播到所有实例的事件也会花费太长的时间,但可能因为它是一个事件,它将在不阻塞计时器滴答事件的情况下发生?

假设您有一个共享引用(这可以变得非常容易),并且您更改了值(好的,仅在一个位置)。引用“变量”的所有对象如何知道该值已更改并更新其状态?您可以使用该LED值保留所有LED观察者的列表,并在LED更改时更新所有观察者。我想这就是我现在正在做的。我基本上有一个需要更新的所有LED的列表,当我需要更新ON状态时,我会遍历每个LED的列表设置。这太慢了(可能是因为屏幕上的每个LED都需要重新绘制的图形?),我需要更快的速度。(a)您可以随时对自己的问题进行评论-就像您在上面所做的那样,(b)您应该将代码和详细说明添加到实际问题中