关于WebService异步调用的一点小疑问?

yumanqing 2007-10-10 05:12:44
在VS2005中的异步调用,
服务器代码:

[WebMethod]
public string HelloWorld()
{
System.Threading.Thread.Sleep(200);
return "Hello World";
}

客户端异步调用代码:

private void button1_Click(object sender, EventArgs e)
{
SalesService.WebService service = new SalesClient.SalesService.WebService();
service.HelloWorldCompleted += new SalesClient.SalesService.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
// do Asyn calling here
service.HelloWorldAsync();
}
private void service_HelloWorldCompleted(object sender, SalesClient.SalesService.HelloWorldCompletedEventArgs e)
{
if (e.Error == null)
{
MessageBox.Show(e.Result);
}
else
{
MessageBox.Show(e.Error.Message);
}

}

现在的问题是:当第一次单击Button1的时候,service_HelloWorldCompleted方法调用一次,当第二次单击Button1的时候,service_HelloWorldCompleted方法调用2次,依次类推...我分析可能是:
service.HelloWorldCompleted += new SalesClient.SalesService.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
这句注册委托有问题,每次都注册,可怎么删除呢?一时想不出好方法呢?TKS
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
庚武讲堂 2010-08-18
  • 打赏
  • 举报
回复
鸟,这问题也太弱智
icefeiji 2007-10-11
  • 打赏
  • 举报
回复
将这句放在全局中:private SalesService.WebService service ;

这两句放在Load里。
service = new SalesClient.SalesService.WebService();
service.HelloWorldCompleted += new SalesClient.SalesService.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
Q69524898 2007-10-11
  • 打赏
  • 举报
回复
关注一下!希望能学到点东东!
ninglh 2007-10-11
  • 打赏
  • 举报
回复
不好意思,我试了下,运行很正常,没出现lz说的情况
postfxj 2007-10-11
  • 打赏
  • 举报
回复
頂一下
ninglh 2007-10-11
  • 打赏
  • 举报
回复
顶,高手来解答哦
yumanqing 2007-10-11
  • 打赏
  • 举报
回复
楼上的方法我实验过了,删除注册,根本就不调用了
hzg_1998 2007-10-11
  • 打赏
  • 举报
回复
service.HelloWorldCompleted -= new SalesClient.SalesService.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
yumanqing 2007-10-11
  • 打赏
  • 举报
回复
UP,怎么没有人呢

110,538

社区成员

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

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

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