车辆信息统计报表管理系统--子、父线程调用的问题(委托)
2013-06-13 14:32
477 查看
下面这个委托有问题,死循环会导致CPU 100%。子线程不能调用父线程。
while (!this.WinControl.IsHandleCreated)
{
}
this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体
修改后的:
#region 使用线程绑定数据
Thread ThreadBinding = null;
ThreadStart BindingStart = null;
delegate void BindingHander();
BindingHander dalegateBinding = null;
/// <summary>
/// 线程加载数据
/// </summary>
private void BindingData()
{
BindingStart = new ThreadStart(GetBindingData);
ThreadBinding = new Thread(BindingStart);
ThreadBinding.IsBackground = true;
ThreadBinding.Name = "EngineRotateSpeed_Analysis_Widget";
ThreadBinding.Start();
dalegateBinding = new BindingHander(DoBindingData);
}
DataSet ds = new DataSet();
WidgetDrive mWidgetDrive = new WidgetDrive();
/// <summary>
/// 获取数据与绑定
/// </summary>
void GetBindingData()
{
try
{
ds = DataLayerTest.Get_Engine_RotateSpeed_Analysis_List_Rpt(mWidgetDrive);//获取数据
if (this.WinControl==null||this.WinControl.IsDisposed)
{
}
else
{
while (!Helper.CanUse(this.WinControl))
{
}
this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体
}
}
finally
{
ThreadBinding.Abort();
}
}
/// <summary>
/// 用获取的DataSet分运行时间端绑定器件数据
/// </summary>
void DoBindingData()
{
ZedGraphControl zgc = base.WinControl as ZedGraphControl;
switch (mWidgetDrive.ChartType)
{
case TimeType.Day:
CreateChartDay(ref zgc);//生成日图表
break;
case TimeType.Week:
CreateChartWeek(ref zgc);//生成周图表。
break;
case TimeType.Month:
CreateChartMonth(ref zgc);//生成月图表。
break;
}
zgc.Invalidate();
}
#endregion
// Helper类里面的CanUsr方法
internal static bool CanUse(Control control)
{
return control!=null&&!control.IsDisposed && control.IsHandleCreated;
}
while (!this.WinControl.IsHandleCreated)
{
}
this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体
修改后的:
#region 使用线程绑定数据
Thread ThreadBinding = null;
ThreadStart BindingStart = null;
delegate void BindingHander();
BindingHander dalegateBinding = null;
/// <summary>
/// 线程加载数据
/// </summary>
private void BindingData()
{
BindingStart = new ThreadStart(GetBindingData);
ThreadBinding = new Thread(BindingStart);
ThreadBinding.IsBackground = true;
ThreadBinding.Name = "EngineRotateSpeed_Analysis_Widget";
ThreadBinding.Start();
dalegateBinding = new BindingHander(DoBindingData);
}
DataSet ds = new DataSet();
WidgetDrive mWidgetDrive = new WidgetDrive();
/// <summary>
/// 获取数据与绑定
/// </summary>
void GetBindingData()
{
try
{
ds = DataLayerTest.Get_Engine_RotateSpeed_Analysis_List_Rpt(mWidgetDrive);//获取数据
if (this.WinControl==null||this.WinControl.IsDisposed)
{
}
else
{
while (!Helper.CanUse(this.WinControl))
{
}
this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体
}
}
finally
{
ThreadBinding.Abort();
}
}
/// <summary>
/// 用获取的DataSet分运行时间端绑定器件数据
/// </summary>
void DoBindingData()
{
ZedGraphControl zgc = base.WinControl as ZedGraphControl;
switch (mWidgetDrive.ChartType)
{
case TimeType.Day:
CreateChartDay(ref zgc);//生成日图表
break;
case TimeType.Week:
CreateChartWeek(ref zgc);//生成周图表。
break;
case TimeType.Month:
CreateChartMonth(ref zgc);//生成月图表。
break;
}
zgc.Invalidate();
}
#endregion
// Helper类里面的CanUsr方法
internal static bool CanUse(Control control)
{
return control!=null&&!control.IsDisposed && control.IsHandleCreated;
}
相关文章推荐
- 项目实例:车辆信息统计报表管理系统--本地化的问题
- 项目实例:车辆信息统计报表管理系统--FlowLayoutPanel容器的问题
- 项目实例:车辆信息统计报表管理系统--WinForm、Web打印设计
- 车辆信息统计报表管理系统--友好界面
- 车辆信息统计报表管理系统--ZedGraph控件属性例子
- 车辆信息统计报表管理系统--ZedGraph控件属性设置以及实例
- 车辆信息统计报表管理系统--GridView和DataGridView合并行和列
- 项目实例:车辆信息统计报表管理系统--导出PDF怎么调样式?
- 搬家公司管理系统,能完成车辆管理、订单管理等工作,并给出报表统计数据
- 学生信息管理系统问题总结(二)
- 线程系统调用阻塞是否导致进程阻塞的问题
- 学生信息管理系统问题——更新
- 学生信息管理系统中遇到的一些问题
- 学生信息管理系统常见的几个问题
- 学生信息管理系统之日期添加方式自动转换问题
- 学生信息管理系统之问题汇总
- 客运综合管理系统项目—报班统计(车辆调度报班)
- 【VB】学生信息管理系统问题总结
- 《用水晶报表快速开发VB信息管理系统》开放实验结业学习效果与建议反馈表
- 磁盘及文件系统管理(分区,挂载,卸载,信息展示与统计)