这几行代码编译能通过,就是运行崩溃,谁能帮我看看问题出在哪里?
下面的代码,只要我在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是在另一线程创建的。