求助:我想在線程中對datagride進行綁定數據,但是在綁定的時候會出錯!請指點!
我想在線程中對datagride進行綁定數據,但是在綁定的時候會出錯!
錯誤:
不可以在線程中對父類進行操作!
希望會的朋友能指點謝謝!
问题点数:20、回复次数:6Top
1 楼hedonister(冰戈)回复于 2005-02-04 09:05:39 得分 2
没见过啊,怎么回事?Top
2 楼shangerhe(king63.com)回复于 2005-02-04 09:09:41 得分 2
把代码贴出来大家帮你研究一下
Top
3 楼dunao([別人騎馬,俺騎驢,比上不足,比下有余])回复于 2005-02-04 10:25:13 得分 0
//定義委派
delegate void ShowData(DataSet oData);
//線程用的函數
private void ThreadGride()
{
oDs = Q.QruGride("");
//實例化datagride委派
ShowData ShowGride;
ShowGride = new ShowData(DataShow);
ShowGride(oDs);
}
/// <summary>
/// 委派調用
/// </summary>
/// <param name="oShowData"></param>
private void DataShow(DataSet oShowData)
{
dgData.DataSource = oShowData.Tables[0];
}
Top
4 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-02-04 10:37:01 得分 8
你在不同的线程中操作要使用Invoke,不能直接操作,你可以选参考一下Invoke的用法.多试几次就出来了,这是个常见的问题.对于一些复杂的控件在不同的线程里操作都是应用Invoke的,比如DataGrid,TreeView等,但是对于一些像textBox,Button等控件就没有这个问题.Top
5 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-04 10:38:01 得分 8
Control.Invoke 的作用是发送一条Windows消息到控件的线程上执行指定的Delegate。
如果委托出现异常,那么就直接把这个异常拦截掉,然后在调用Control.Invoke的线程上抛出。
我倒是希望有个选项把这个拦截去掉。如果出现错误,直接在控件的线程上抛出,然后显示错误。这多好啊。
否则的话,出现错误,根本就没有提示。也不好调试。
Top
6 楼dunao([別人騎馬,俺騎驢,比上不足,比下有余])回复于 2005-02-04 13:03:37 得分 0
//定義委派,在線程中調用給datagride
//進行綁定數據
private delegate void ShowData(DataSet oData);
private ShowData GrideShow;
GrideShow = new ShowData(DataShow);
/// 用線程對datagride進行綁定函數
/// </summary>
private void ThreadGride()
{
try
{
oDs = Q.QruGrideB(18,sLang);
IAsyncResult r = BeginInvoke(GrideShow, new object[] {oDs});
}
catch(Exception e)
{
MessageBox.Show(e.Message,"Thread");
}
}
/// <summary>
/// 用於委派函數
/// </summary>
/// <param name="oShowData"></param>
private void DataShow(DataSet oShowData)
{
dgData.DataSource = oShowData.Tables[0];
}Top
相关问题
- delphi是否可以设定编译程序的时候保存源代码
- 关于如何让自己的程序在特定时候运行。
- 【求助】在创建进程的时候,可否规定该进程的线程数啊?
- DELPHI主程序的参数是什么时候指定的,如何定义?它具有什么作用?
- 在程序中使用WinExec调用某应用程序的时候如何指定打开的位置
- 多条件查询的时候,写存储过程的时候怎么写where条件 ,条件数不确定啊
- 用的datagride控件,按编辑,更新的时候,更新不了?
- 菜单问题:如何在应用程序初始化的时候Disabled某些指定的菜单项?
- <VC++时尚编程百例>:工具条类一定要建立吗(当然是用工具条的时候)?
- 怎样实现一个特定程序启动的时候另外一个也启动?




