从装配中捕获变量

时间:2014-01-23 22:10:27

标签: c# multithreading events event-handling .net-assembly

布尔变量在程序集中初始化为false,但在某些时候会变为true。我应该如何在加载程序集的主应用程序中捕获它?

有人说我应该从汇编中激活一个事件,然后在主应用程序中捕获它。这听起来很合理,但是怎么样?或者其他任何方式吗?谢谢!

我在问这个想法,以及一些示例代码。感谢。

修改

就像我说过我有两个独立的实例,一个是在某个时刻会释放一些信号的组件,另一个是试图捕获组件发出的信号的主应用程序。因此,如果有一些代码,我需要知道代码属于哪个实例。

1 个答案:

答案 0 :(得分:1)

事件可以像这样工作

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click( object sender, EventArgs e )
        {
            var logChecker = new Test();
            logChecker.ChangedEvent += x => MessageBox.Show( "Value is " + x );
            logChecker.Start();
        }
    }

    internal class Test
    {
        private bool _property;

        public Boolean Property
        {
            get { return _property; }
            set
            {
                _property = value;
                ChangedEvent( value );
            }
        }

        public void Start()
        {
            var thread = new Thread( CheckLog );
            thread.Start();
        }

        private void CheckLog()
        {
            var progress = 0;
            while ( progress < 2000 )
            {
                Thread.Sleep( 250 );
                progress += 250;
            }
            Property = true;
        }

        public event TestEventHandler ChangedEvent;
    }

    internal delegate void TestEventHandler( bool value );