Ok…下一个问题。我正在使用Silverlight 5 C#
2012,并且已经到了我可以使用一点帮助的地步。我使用域模型来调用方法来返回信息,并且我发现,如果我多次点击相同的按钮,方法调用将以增量方式发生。第一次点击一次,第二次点击两次,第三次点击三次,等等。
请查看下面的简单代码,如果你能提供任何关于为什么会发生这种情况的见解,我将非常感激。
在服务层:
接口:
[OperationContract]
string GetEnteredString(string strText);
类:
public string GetEnteredString(string strText)
{
return "You entered: " + strText;
}
在Silverlight应用程序中:
private void btnGetText_Click(object sender, RoutedEventArgs e)
{
service.GetEnteredStringCompleted += new EventHandler<CARE_WCF.GetEnteredStringCompletedEventArgs>(service_GetEnteredStringCompleted);
service.GetEnteredStringAsync(txtTester.Text);
}
private void service_GetEnteredStringCompleted(object sender, CARE_WCF.GetEnteredStringCompletedEventArgs e)
{
MessageBox.Show(e.Result.ToString());
}
乍一看,这似乎非常直接,但是对GetEnteredString方法的调用只是在自身之上堆叠。我认为这是因为Click事件中的+=,但我可能错了。
提前感谢您的任何见解!我真的很感激。Eric
您必须取消订阅已完成功能中的事件,如:
service.GetEnteredStringCompleted -= service_GetEnteredStringCompleted;