问题标签 [asynchronous-wcf-call]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1894 浏览

c# - c#异步调用UI没有响应

这是我的要求:

单击按钮时,我需要从数据库中获取数据并填充到 datagridview 中,为此我使用了一个函数。由于检索可能需要很长时间并且我想同时使用 UI,我希望这个函数在单独的线程中运行。为此,我使用异步回调。但在begininvoke()andendinvoke()函数之间。我没有写任何代码(我不知道写什么来让 UI 响应)。

datagridview 正在正确填充,但是当我在函数检索数据时尝试访问它时 UI 被阻止。

0 投票
3 回答
379 浏览

wcf - 解耦异步调用——WCF 或 WF

我正在开发一个客户端/服务项目,其中客户端将位于防火墙后面,其 IP 不是静态的。客户端将调用该服务。然后,服务将在稍后的某个时间(可能是数小时后)在拥有客户数据时联系客户。每个服务会有很多客户。

我查看了一些 WCF 示例,它们似乎使连接保持打开状态,我不想这样做。在我看到的几个 WF 示例中,看起来服务可以在超时到期后联系客户端,大概是在不同的连接上。

我对这些技术非常陌生,但花了无数时间研究和测试样品。似乎我读的越多,我对最佳解决方案的了解就越少。WF 对我来说是最好的解决方案,还是可以使用 WCF 实现我想要的结果?

0 投票
1 回答
1142 浏览

wcf - 在合约操作执行期间调用回调

我正在 Azure 上编写 WCF 服务。

在我的服务中,我需要在合约操作执行期间调用回调。当我尝试这样做时,会抛出异常并且客户端将被锁定。我认为这是由于为合约操作打开了通道,在当前通道中调用回调会锁定线程,对吗?我想获得这种情况的解决方案。

这是超时异常消息:

发送到 net.tcp://127.255.0.0:8000/MytestWCFService 的此请求操作在配置的超时 (00:00:59.9889989) 内未收到回复。分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。

编辑:代码示例

然后我在服务端实现 IContract:

我在当前频道回拨,这是一个双工频道。

0 投票
0 回答
309 浏览

silverlight - 来自后台线程的 RIA 服务调用

我正在开发使用 RIA 服务的 Silverlight 应用程序。应用程序运行时我有很多数据要加载,并且所有数据都必须显示在 UI 上。
我正在使用不同的查询加载数据,并且加载片段之间没有顺序依赖关系。
随着数据的到来,开始绘制,主要是基于数据的矩形和线条。
处理数据花费了太多时间。我正在使用 fiddler 查看 http 请求,并得到以下结果。从 DB 获取数据并接收大约需要 1.5 秒。但在收到响应后,触发完成事件大约需要 6 秒。那时 UI 线程正忙于计算和渲染。
我尝试使用后台工作人员进行服务调用,但所有已完成的事件都在 UI 线程上触发。
有什么方法可以进行服务调用并处理从非 UI 线程接收到的数据?

编辑:
我评论了一些代码,它在 UI 上绘制了一些元素,处理数据需要 0.4 秒,而不是之前的 6 秒,所以原因是在繁忙的 UI 线程上,它在触发完成事件之前处理接收到的数据。

谢谢。

0 投票
1 回答
702 浏览

c# - 为什么基于 ChannelFactory 的客户端应用程序不能使用事件驱动的异步调用模型

我在 MSDN 中发现基于 ChannelFactory 的客户端不能使用事件驱动的异步调用模型,但是基于 ServiceModel.ClientBase 的客户端可以

这如何合理?原因是什么?这是 MSDN 链接http://msdn.microsoft.com/en-us/library/ms731177

0 投票
1 回答
1626 浏览

ios - 在 Web 服务调用响应中自动填充文本

我是 ios 编程的新手,需要实现类似谷歌搜索框的东西,即自动填充文本字段。我的场景如下 1.当用户在文本字段中输入 2.后台调用 web 服务获取数据(请求数据 = 文本字段数据)。

例如:- 如果用户在文本字段中键入“abc”,则 Web 服务调用的请求数据应为“abc”,并且 Web 服务会对此做出响应。现在下次用户键入“d”即文本字段包含“abcd”服务响应时必须考虑附加文本。(类似于谷歌搜索字段) 3.web 服务调用应该是异步的。4.response应该显示在下拉列表中。

ios可以吗???任何教程或示例将不胜感激。提前致谢。

0 投票
4 回答
1559 浏览

c# - 处理长时间运行的 WCF [OperationContract(IsOneWay = true)]

我关注的是定义为 OneWay 的服务,因为它运行时间很长(几分钟),我等不及它完成时(它在 ASP.NET 应用程序中使用)。

问题是,如果我在服务调用后调用 client.Dispose() ,它会阻塞并且在 60 秒后超时过期并出现异常。

在这种情况下我应该如何处置客户?增加服务的超时不是解决方案,因为我不能等待使用它的网页的 HTTP 请求这么长时间。

感谢您的提示。

0 投票
1 回答
138 浏览

windows - 异步 WCF 调用在客户端处理不当

这是场景。

我有一个遵循基于异步事件的设计模式的 WinForm 应用程序(C#,.NET 3.5)。

主控件(MainResultControl)根据用户请求创建多个子控件(ResultControl)实例。每个子控件都有一组独特的参数供用户选择。

然后每个子控件异步调用 WCF 服务:

每个子控件还注册了 Web 服务的 GetResultsCompleted 事件

WebServiceClient.GetResultsCompleted += _service_GetResultsCompleted()

这是我们面临的问题。用户抱怨有时 ResultControl 会显示意外的数据集 - 与他们请求的内容无关。

一个控件实例是否有可能收到另一个实例在处理 Web 服务中引发的 GetResultsCompleted 事件时请求的结果?

谢谢你。

这是一些支持代码(VB):父控件(MainResultControl)

子控件(ResultsControl):

编辑:

我咨询了一些人,似乎 WCF 有一些方法可以确保从服务引发的事件由引发它的正确对象(在客户端计算机上)处理。这个想法是 - WCF 在客户端机器上使用不同的 IP 套接字来处理多个异步请求。真的吗?

0 投票
0 回答
920 浏览

wcf-callbacks - WCF:使用异步方法在回调(同一客户端)上调用服务方法

我正在做一些 WCF 实验,以了解我可以使用会话、回调和 TPL 运行多远。其中一个实验产生了奇怪的结果......服务是通过双向绑定 (NetTcpBinding) 实现的,并且通知是作为回调实现的。预期的行为应该是:

  1. 客户端以同步方式调用服务(Do)上的方法
  2. 服务以同步方式在客户端调用回调
  3. 客户端(在回调中)以异步方式调用服务上的第二个 a 方法

该服务需要一个会话,InstanceContext 是 PerSession,并发模式是 Single。在这种情况下,我知道,在回调的上下文中,我不能以同步方式调用服务的任何方法(在同一客户端上),因此代码可以是:

客户端回调接口的实现:

运行所有代码的主要方法:

在我的想法中,Notify 方法的实现中的行:

应该打破死锁但是......不,当调用 ReDoAsync 时会抛出一个异常,说“这个操作会死锁,因为在当前消息完成处理之前无法接收到回复......”。是的,亲爱的,我知道。事实上,我想以异步方式回调服务以绕过问题,但它不起作用。

但让我抓狂的是,稍微修改一下代码就能让它像魅力一样工作。而不是我尝试的 ReDoAsync 调用:

它有效!所以问题是:客户端方法的异步版本不应该进行与有效的调用相同或相似的调用吗?如果不是,那么客户端方法的异步版本到底是做什么的?

谢谢。

0 投票
1 回答
113 浏览

wcf - 取消带有大数据的 WCF 调用?

我即将使用 WCF 实现 FileService。它应该能够通过提供文件内容本身和文件名来上传文件。当前的 ServiceContract 如下所示

目前它工作正常,但我希望能够使用这个 Fileservice 减少我的应用程序的网络负载。一旦用户打开我的应用程序的特定部分,我就需要提供许多文件,但是一旦用户进一步浏览应用程序,我就可以取消其中的一些文件。由于我的许多文件都在 50 到 300 MB 之间,因此传输文件需要几秒钟的时间(应用程序可能在非常慢的网络上运行,可能需要一分钟)。

澄清和概述与所有其他 WCF 问题的区别:具体问题是在客户端 <-> 服务器之间提供数据是瓶颈,而不是服务本身的性能。将接口更改为流式 WCF 服务是否合理?