如何从silverlight 3取消长时间运行的WCF请求

时间:2010-03-11 03:59:29

标签: wcf silverlight silverlight-3.0

我有一个silverlight 3应用程序,可以向WCF服务发出几个长时间运行的请求。当这些调用正在进行时,任何其他后来的WCF调用都会被silverlight 3排队,因为它只会同时执行两个请求,从而使应用程序陷入困境:(

如何取消长时间运行的阻止请求?

2 个答案:

答案 0 :(得分:1)

不幸的是,我知道的唯一方法就是在您的代理上调用Abort(),但要小心,您需要在之后创建它的新实例(并重新订阅已完成的事件),因为它关闭了基础连接。另请注意,这会终止所有当前的异步请求,因此您需要在调用其他异步请求之前调用它。

答案 1 :(得分:-1)

不直接回答您的问题,但您可以同时发出两个以上的传出http请求。

如果您的应用程序发出大量传出的http请求,您将被.Net限制。默认情况下,.Net仅支持两个同时传出的http请求。要解决这个问题,您需要在app.config中添加system.net部分。

以下是一个示例代码段。

<system.net>
    <defaultProxy>
        <proxy usesystemdefault="false" bypassonlocal="true" />
        <bypasslist>
            <add address = "[^.]+\.[^.]+\.ntwk\.msn\.net$" />
            <add address = "[^.]+\.phx\.gbl$" />
        </bypasslist>
    </defaultProxy>
    <connectionManagement>
        <add address = "*" maxconnection = "12" />
    </connectionManagement>
</system.net>