0

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

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

4

1 回答 1

0

您必须取消订阅 Completed 函数中的事件,例如:

service.GetEnteredStringCompleted -= service_GetEnteredStringCompleted;
于 2013-03-29T15:47:43.113 回答