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

请问下执行委托和不执行的区别,我写了个例子。。
        private delegate void WriteLabelDelegate(object entry);

        private void WriteLoginResult(object text)
        {
            this.labellogin.Text = text.ToString();
        }

        private void SetLoginResult(string text)
        {
            this.labellogin.Invoke(new WriteLabelDelegate(WriteLoginResult), text);
            如果上面这句我换成
            WriteLoginResult(text);
            有啥区别么?
        }



------解决方案--------------------
如果SetLoginResult在非主线程(界面线程)调用,那么两者就有区别了。
使用Control.Invoke由界面线程调用,是安全的。
直接调用则在当前线程调用,是不安全的。