关于 C# WebService 异步回调的问题请教大家

jiangsong2004 2010-01-08 04:07:12
我做了一个动态更新数据的WINFORM程序更新相关数据 数据源是WEBSERVICE
首先 我引用一个WEBSERVICE 然后对其进行实例化
让你后做异步调用 ,返回结果是一个 数据集(DataSet)
例如:
//实例化WebService
WebService1 ws = new WebService1 ();
////执行回调查询Tirm---10秒一刷新
ds.getDataSetAsync("select * from table");
//绑定回调方法
ws.getDataSetAsyncCompleted += new getDataSetCompletedEventHandler(getDataSetAsync);
---------------*********************回调函数************************-----------------------------
void getDataSetCompleted(object sender, getDataSetCompletedEventArgs e)
{
//获取回调返回的数据集
DataSet ds = (DataSet)e.Result;
//做相关操作 DataSet 。。。。。。。。。。。。
}

请问我这样用对吗? 现在是出现一个问题 网络带宽好的时候 很顺 稍微一不好 就影响了 界面 都会一卡一卡的 ,有做过异步回调的 可以帮看看 谢谢了。

...全文
635 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzp144650 2010-01-21
  • 打赏
  • 举报
回复
你这段代码写哪了???

ds.getDataSetAsync("select * from table");
//绑定回调方法
ws.getDataSetAsyncCompleted += new getDataSetCompletedEventHandler(getDataSetAsync);
---------------*********************回调函数************************-----------------------------
void getDataSetCompleted(object sender, getDataSetCompletedEventArgs e)
{
//获取回调返回的数据集
DataSet ds = (DataSet)e.Result;
//做相关操作 DataSet 。。。。。。。。。。。。
}

你把这部分你写一个方法里了??

先不说别的,你要是写一个方法里了,就等于你注册了N次这个事件,这个事件触发的时候,下面那个方法貌似要执行N次
wqf2 2010-01-21
  • 打赏
  • 举报
回复
网络不好的时候,ws在为getDataSetAsyncCompleted 事件传输参数的时候必然会消耗很长时间,所以会卡。说白了就是和异步没什么关系。
wangping06 2010-01-19
  • 打赏
  • 举报
回复
帮顶
jiangsong2004 2010-01-19
  • 打赏
  • 举报
回复
但是还是没明白为什么异步没起作用
jiangsong2004 2010-01-19
  • 打赏
  • 举报
回复
现在解决了 用了多线程 + WEBSERVICE
jiangsong2004 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jarod 的回复:]
调换下顺序试试
WebService1 ws = new WebService1 ();

ws.getDataSetAsyncCompleted += new getDataSetCompletedEventHandler(getDataSetAsync);

ws.getDataSetAsync("select * from table");

[/Quote]
位置也调整过 还是看 唉!
wangping06 2010-01-18
  • 打赏
  • 举报
回复

//实例化WebService
WebService1 ws = new WebService1 ();
////执行回调查询Tirm---10秒一刷新 --完成回调函数后过十秒再刷新
ds.getDataSetAsync("select * from table");
//绑定回调方法
ws.getDataSetAsyncCompleted += new getDataSetCompletedEventHandler(getDataSetAsync);
---------------*********************回调函数************************-----------------------------
void getDataSetCompleted(object sender, getDataSetCompletedEventArgs e)
{
//获取回调返回的数据集
DataSet ds = (DataSet)e.Result;
//做相关操作 DataSet 。。。。。。。。。。。。
}

Jarod 2010-01-12
  • 打赏
  • 举报
回复
调换下顺序试试
WebService1 ws = new WebService1 ();

ws.getDataSetAsyncCompleted += new getDataSetCompletedEventHandler(getDataSetAsync);

ws.getDataSetAsync("select * from table");
S314324153 2010-01-11
  • 打赏
  • 举报
回复
不太喜欢用Ws,老是担心网络出问题
beniao277 2010-01-11
  • 打赏
  • 举报
回复
网络延迟肯定会卡界面的,用线程调用就不会了。

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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