逐步调用Silverlight 5域模型事件处理程序

时间:2013-03-29 14:15:48

标签: silverlight events event-handling domain-model

好的......下一个问题。我正在使用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事件中的+ =但我可能是错的。

提前感谢您的任何见解!对此,我真的非常感激。 埃里克

1 个答案:

答案 0 :(得分:0)

您必须取消订阅已完成功能中的事件,例如:

service.GetEnteredStringCompleted -= service_GetEnteredStringCompleted;