请教:
子线程中执行一段操作后就将一个变量设为100;主线程中当等到这个变量为100时立即执行某个操作。
如何实现这样的功能(不想用while语句,因那样太耗资源)?我认为其实质类似于控件事件--当某个事件发生时就执行规定的操作,但变量的值的变化如何做成事件呢?如果
不能用事件,又有别的什么方法?

解决方案 »

  1.   

    子线程做个世间 当附值到100的时候执行事件???
         private void Form1_Load(object sender, EventArgs e)
            {            System.Threading.Thread _MainTherad = new System.Threading.Thread(new System.Threading.ThreadStart(MainThread));
                _MainTherad.Start();
            }        public void MainThread()
            {
                Sub _Sub = new Sub();
                _Sub.End += new Sub.EndThread(Q);
                System.Threading.Thread _SubTherad = new System.Threading.Thread(new System.Threading.ThreadStart(_Sub.SubThread));            _SubTherad.Start();        }        void Q(string View)
            {
                MessageBox.Show(View);
            }        public class Sub
            {
                public delegate void  EndThread(string View);
                public event EndThread End;
                public void SubThread()
                {
                    for (int i = 0; i != 100; i++)
                    {                }
                    if (End != null) End("OK");
                }
            }
      

  2.   


    private int number;
    public int Number
    {
    get{return number;}
    set
    {number=value;
    if(value==100)
    {
    DoSomething();
    }
    }
    }
      

  3.   


    delegate void Dchanged(object sender, int i);
    class A
    {
       Dchanged OnValueChanged;
       int i;
       public int IntValue
       {
          get{return i;}
          set{ if (i != value && OnValueChanged != null)
               OnValueChanged(this, value);
              i = value;
          }
       }
    }
      

  4.   

    用属性器 和委托吧
    delegate void abc();class edf
    {
        public abc Dosomething = null;
        private int b;
        public int B
        {
           set
           {
              if(Dosomething != null && value==100)Dosomething();
           }
        }
    }
      

  5.   

    用backgroundWorker控件应该可以