我异步调用方法里面更新DataGrid的数据怎么不行?

netease 2004-04-30 09:52:18
同步可以,跟踪异步调用,发现是执行了的,而且也是正确的DataTable
...全文
118 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
netease 2004-05-10
  • 打赏
  • 举报
回复
怎么不回答了?
我将我的调用的代码也贴出来吧,请结合上面的两个方法来看,谢谢
private void btnInvoke_Click(object sender, System.EventArgs e)
{
AsyncCallback AscCall = new AsyncCallback(this.GetDataTable);
InvokeRemote deleRemote = new InvokeRemote(this.InvokeRemoteMethod);
deleRemote.BeginInvoke(AscCall,null);

}
netease 2004-05-08
  • 打赏
  • 举报
回复
private void GetDataTable(IAsyncResult ar)
{
InvokeRemote d = (InvokeRemote)((AsyncResult)ar).AsyncDelegate;
dgdRemoteData.DataSource = d.EndInvoke(ar);
}

private DataTable InvokeRemoteMethod()
{
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan);
Hello obj = (Hello)Activator.GetObject(typeof(Hello), "tcp://localhost:8055/Hi");

if(obj != null)
{
DataTable objDt = obj.QueryFromSql("Select * From TableABC");
ChannelServices.UnregisterChannel(chan);
return objDt;
}
ChannelServices.UnregisterChannel(chan);
return null;
}
netease 2004-05-08
  • 打赏
  • 举报
回复
我没有create controls,我只是invoke了control的method而已
netease 2004-05-08
  • 打赏
  • 举报
回复
用this.BeginInvoke?
怎么用?
Samen168 2004-05-08
  • 打赏
  • 举报
回复
DataGrid设置数据源的时候会产生新控件用this.BeginInvoke
saucer 2004-05-01
  • 打赏
  • 举报
回复
don't create controls on the non-GUI thread, show your code
netease 2004-05-01
  • 打赏
  • 举报
回复
我在异步方法的CallBack里面更新DataGrid怎么不行呢?提示
"在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。"
netease 2004-05-01
  • 打赏
  • 举报
回复
不是,完全误解了我的意思
netease 2004-04-30
  • 打赏
  • 举报
回复
谢谢了,各位~~~~
saucer 2004-04-30
  • 打赏
  • 举报
回复
use the control's Invoke method, read the above article
netease 2004-04-30
  • 打赏
  • 举报
回复
原来更新的时候有个错误,我try一下才发现了,错误信息如下:
"在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。"
为什么我在异步方法的CallBack里面更新DataGrid不可以呢?该如何写?
saucer 2004-04-30
  • 打赏
  • 举报
回复
see

Safe, Simple Multithreading in Windows Forms, Part 2

http://msdn.microsoft.com/library/en-us/dnforms/html/winforms08162002.asp?frame=true
netease 2004-04-30
  • 打赏
  • 举报
回复
无法更新,真的奇怪了,呵呵
netease 2004-04-30
  • 打赏
  • 举报
回复
我就是Winform里面的
kob 2004-04-30
  • 打赏
  • 举报
回复
在WebForm里面是不行的,Winform里面可以
因为Web程序的话,回调回来的消息会被IE拦截了,所以你的Form收不到
flyingdream123 2004-04-30
  • 打赏
  • 举报
回复
听不懂,帮你up

110,539

社区成员

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

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

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