在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级

s198127 2004-07-07 09:49:54
我使用C#+ WEB SERVICE 实现数据提取的功能:
用C#做前台WINDOWS界面,在要提取数据时候向WEB SERVICE 发不同的请求

请求响应后返回一个包含相关数据的DATATABLE,我再将这个返回结果放入
DATAGRID中,但第一次运行耗费的时间较长,我就在前台中加了个TIMER事件

并新建一个线程来处理对WEB SERVICE的数据请求和响应,在该线程中主要
实现对请求的发送和对结果的接收,并将结果放入到DARAGRID中,

但在实际运行时候结果接收正常,但在放入到DATAGRID中时候出现以下异常:

System.ArgumentException: 在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。
at System.Windows.Forms.ControlCollection.Add(Control value)
at System.Windows.Forms.DataGridTextBoxColumn.SetDataGridInColumn(DataGrid value)
at System.Windows.Forms.DataGridColumnStyle.SetDataGridTableInColumn(DataGridTableStyle value, Boolean force)
at System.Windows.Forms.GridColumnStylesCollection.AddDefaultColumn(DataGridColumnStyle column)
at System.Windows.Forms.DataGridTableStyle.SetGridColumnStylesCollection(CurrencyManager listManager)
at System.Windows.Forms.DataGrid.PairTableStylesAndGridColumns(CurrencyManager lm, DataGridTableStyle gridTable, Boolean forceColumnCreation)
at System.Windows.Forms.DataGrid.SetDataGridTable(DataGridTableStyle newTable, Boolean forceColumnCreation)
at System.Windows.Forms.DataGrid.Set_ListManager(Object newDataSource, String newDataMember, Boolean force, Boolean forceColumnCreation)
at System.Windows.Forms.DataGrid.Set_ListManager(Object newDataSource, String newDataMember, Boolean force)
at System.Windows.Forms.DataGrid.set_DataSource(Object value)
at Data_Manager.PsHosp.hosp_info() in e:\win2003 c#\data manager\pshosp.cs:line 547

希望有高手能指点一二。
...全文
390 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
s198127 2004-07-07
  • 打赏
  • 举报
回复
通过多方查找终于把这个问题解决了,原来要用到委托

///建立用于线程中能调用的委托
private void data_1(DataTable dataTable)
{
dataGrid1.DataSource = dataTable;
dataGrid1.Refresh();
}
//新建立一个操作dataGrid的方法
public delegate void data_1Callback(DataTable dataTable);
//新建立一个调用该方法的委托

线程中
{
hospTable = webService1.D_hosp_no(ls_hosp_no,ls_app_code).Tables[0];
//重webService1中获取相关的数据集合

dataGrid1.Invoke(new data_1Callback(this.data_1),
//调用委托(操作dataGrid的方法)
new object[]{hospTable});
//传递操作参数(操作dataGrid的方法中需要的参数)
}

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧