【问题标题】:silverlight communication between client and server客户端和服务器之间的 Silverlight 通信
【发布时间】:2010-10-12 16:27:17
【问题描述】:

抱歉,我无法发布代码,但这里有详细的情况。

用户打开一个表单 它添加了一个事件侦听器,例如:

GP.GlobalInfo.CommWCF.serviceClient.GetFilteredMessageCompleted += new EventHandler<GetFilteredMessageCompletedEventArgs>(serviceClient_GetFilteredMessageCompleted);

然后向服务器发送异步消息以从数据库中获取所需的数据。 同时,表单添加了另一个事件监听器,然后发送另一个消息:

GP.GlobalInfo.CommWCF.serviceClient.GetFilteredMessageCompleted += new EventHandler<GetFilteredMessageCompletedEventArgs>(serviceClient_GetFilteredMessageCompletedAnother);

所以客户端(表单)正在等待返回两条消息。 一旦返回消息,表单将在网格中显示数据。

它似乎没有像我预期的那样工作。不知何故,消息卡在某个地方。 所以,我想知道我的方法是否错误。


另一种情况是,屏幕上有五个我可以点击的对象。 这五个对象将使用同一个类来创建。 单击一个对象会带来一个带有相应数据的表单。 如果我单击第一个对象,表单将添加一个事件侦听器并向服务器发送一条消息。 当窗体等待数据时,我关闭窗体,然后通过单击另一个对象打开另一个窗体。 新表单将添加一个事件侦听器并向服务器发送一条新消息。

同时,服务器一直在处理第一个表单消息,并将结果返回到第二个表单..而不是第一个表单(已关闭)。

这就是我现在所经历的。 任何人都可以尽快给我一些解决方案,以便更好地理解silverlight和WCF。 我想我应该向服务器发送停止消息之类的......

--------老问题----------

您好,我的客户端和服务器之间的通信似乎有些问题。

当打开一个表单时,会打开三个侦听器。每个侦听器都获取所需的数据。

我认为(不确定)silverlight 在同时使用这三个侦听器进行通信时卡住了。

那么,我是否应该始终在 silverlight 中只使用一个同时运行的侦听器? 就像,

客户端向服务器请求 A 数据
客户端向服务器请求 B 数据 客户端将C数据保存到服务器

这些东西不能同时做? 我是否总是确保客户端和服务器之间的单一通信过程?

谢谢

【问题讨论】:

  • hmm.. 你能用更具体的方式解释你所说的“听众”是什么意思,你的问题到底是什么。如果能提供一些代码就更好了。很遗憾,现在没有人能回答你了。

标签: c# visual-studio-2008 silverlight wcf silverlight-3.0


【解决方案1】:

问题在于事件处理程序只是告诉“当这种操作完成时,给我打电话”。事件处理器与具体调用无关,与操作的种类有关。

如果您两次调用相同的操作,则不能附加两个事件处理程序并期望每个调用调用各自的处理程序。发生的情况是,当一个操作完成时,每个附加到该操作的处理程序都会被调用。

您可以通过以下方式解决您的问题

  • 为每个特定操作附加一个事件处理程序
  • 当您调用 yourOperation_Async() 时,您可以将标识符作为 userState(最后一个参数)传递
  • 在事件处理程序中,您根据标识符采取相应的行动(您可以从 yourOperationCompledEventArgs.UserState 中检索它),例如。更新正确的表格。

虚拟示例:

...
serviceClient.YourOperationAsync(formName);
...

void serviceClient_YourOperationCompleted(object sender, YourOperationCompletedEventArgs e)
{
    if (e.UserState != null && e.UserState is string)
    {
       string formToUpdate = (string)e.UserState;
       ...
       ... update formToUpdate ...
       ...
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2020-05-16
    • 1970-01-01
    • 2014-08-04
    相关资源
    最近更新 更多