首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

这几行代码编译能通过,就是运行崩溃,哪位高手能帮小弟我看看有关问题出在哪里

2012-04-14 
这几行代码编译能通过,就是运行崩溃,谁能帮我看看问题出在哪里?下面的代码,只要我在main函数里调用this.WS

这几行代码编译能通过,就是运行崩溃,谁能帮我看看问题出在哪里?
下面的代码,只要我在main函数里调用this.WS(),立即崩溃,为什么?

下面只有三个函数,都是很简单的,

第一个函数,开启一个线程。
第二个函数,就是线程内容,主要是一个循环,去改变背景颜色。
第三个函数,就是一个修改背景颜色的托管。

C# code
        private void WS()        {            Thread t = new Thread(new ThreadStart(delegate() { TWS(); }));  //开启一个线程            t.IsBackground = true; //设置为后台线程            t.Start();        }        public void TWS()        {            bool bl = true;            while (true)            {                SolidColorBrush SCB = new SolidColorBrush();                if (bl==true)                {                    bl = false;                    SCB.Color = Colors.Red;                }                else if (bl==false)                {                    bl = true;                    SCB.Color = Colors.Green;                }                this.BWCC(SCB);                Thread.Sleep(500);            }        }        //******修改颜色的委托******        delegate void BWCC_Handle(SolidColorBrush SCB);        void BWCC(SolidColorBrush SCB)        {            if (this.Dispatcher.Thread != System.Threading.Thread.CurrentThread)            {                this.Dispatcher.Invoke(new BWCC_Handle(this.BWCC), SCB);            }            else { this.Background = SCB; }        }


[解决办法]
你在调试时没有收到错误信息?
System.InvalidOperationException
无法使用 DependencyObject,它属于其父 Freezable 之外的其他线程。

SolidColorBrush SCB是在另一线程创建的。

热点排行