好的......下一个问题。我正在使用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事件中的+ =但我可能是错的。
提前感谢您的任何见解!对此,我真的非常感激。 埃里克
答案 0 :(得分:0)
您必须取消订阅已完成功能中的事件,例如:
service.GetEnteredStringCompleted -= service_GetEnteredStringCompleted;