因为WaitForSingleObject函数会将主线程挂起(任何消息都得不到处理),而子线程ThreadFunc正在设置进度条,一直在等待主线程将刷新消息处理完毕返回才会检测通知事件。这样两个线程都在互相等待,死锁发生了,编程时应注意避免。
myDataBindingSource.Clear();
chartControl1.DataSource = null; // 撤除DataSource关联
List
double se = r.NextDouble();
for (int i = 1; i < 100000; i++)
{
ls.Add(new MyData() { Index = i, Val = se * Math.Sqrt(i) });
}
ls.ForEach(x => this.myDataBindingSource.Add(x)); // 内存中组织数据源数据
chartControl1.DataSource = this.myDataBindingSource; // 重新关联数据源
经过测试,极大量数据刷新仍能保持非常快的速度。