日期:2014-05-17  浏览次数:20777 次

这段代码如何理解
ThreadStart 做为形参,不太理解。

这是一个自定义控牛里的代码节选

     

       private ThreadStart OnStartClicked = null;
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.RaiseEvent(this.OnStartClicked);
        }

        public void SetWaiting(ThreadStart dlgtClickStart)
        {
           
            this.OnStartClicked = dlgtClickStart;
        }


        public void RaiseEvent(ThreadStart ts)
        {
            if (ts==null) {return ;}
            base.Invoke (ts);
            return ;  
        }




问题; 
this.RaiseEvent(this.OnStartClicked);会产生一个新线程吗?

------解决方案--------------------
ThreadStart是委托 http://msdn.microsoft.com/zh-cn/library/system.delegate(VS.80).aspx
调用SetWaiting给委托赋值
调用RaiseEvent
//ts为空直接返回了
if (ts==null) {return ;}
//不为空时才会用父类调用
base.Invoke (ts);
return ; 
------解决方案--------------------
看一下这句。
base.Invoke (ts);

父类是怎么样调的。

如果有开线程,就会有,如果没有就没有。