Silverlight HttpWebRequest.Create 挂在异步块内

2024-02-20

我正在尝试构建从 Silverlight (4) 到 JBOSS Web 服务器的 Rpc 调用原型。我已经编写了代码,并且它正在控制台应用程序中运行 - 所以我知道 Jboss 正在响应 Web 请求。将其移植到 silverlight 4 会引起问题:

let uri =  new Uri(queryUrl)
// this is the line that hangs
let request : HttpWebRequest = downcast WebRequest.Create(uri)
request.Method <- httpMethod;
request.ContentType <- contentType 

这可能是一个沙箱问题,因为我的 silverlight 是从我的文件系统中提供服务的,并且 Uri 是对本地主机的引用 - 尽管我什至没有得到异常。想法?

Thx


UPDATE 1

我创建了一个新项目并移植了我的代码,现在它可以工作了;就 F# Silverlight 集成而言,某些东西肯定仍然不稳定。仍然很感激在旧模型中调试“悬挂”网络创建的想法......


UPDATE 2

let uri = Uri("http://localhost./portal/main?isSecure=IbongAdarnaNiFranciscoBalagtas")
// this WebRequest.Create works fine
let req : HttpWebRequest = downcast WebRequest.Create(uri)

let Login = async {
    let uri =  new Uri("http://localhost/portal/main?isSecure=IbongAdarnaNiFranciscoBalagtas")
     // code hangs on this WebRequest.Create
     let request : HttpWebRequest = downcast WebRequest.Create(uri)
     return request
}
Login |> Async.RunSynchronously

我肯定错过了什么;异步块在控制台应用程序中工作正常 - Silverlight 应用程序中不允许吗?


(感谢您将其发送给 fsbugs,迫使我们仔细研究。)

问题是Async.RunSynchronously。当在 UI 线程上调用时,这会阻塞 UI 线程。事实证明WebRequest.Create()Silverlight 上分派到 UI 线程。所以这是一个僵局。

一般来说,尽量避免Async.RunSynchronously在 Silverlight 上(或在任何 UI 线程上)。您可以使用Async.StartImmediate在这个例子中。或者,我想你可以打电话RunSynchronously从任何后台线程都没有问题。 (我自己还没有尝试足够的端到端 Silverlight 方案来提供更多建议。您可以查看

F# 游戏编程(使用 Silverlight 和 WPF) http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!1910.entry

F# 和 Silverlight http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!1854.entry

客户端的 F# 异步 http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!1842.entry

一些简短的例子。)

(回想起来,F# 设计团队认为我们也许不应该包括Async.RunSynchronously在用于 Silverlight 的 FSharp.Core 中;该方法可能违反平台的精神(不阻塞调用)。我们可能会在未来的 Silverlight 版本中弃用该方法。另一方面,它仍然可以有效地用于 Silverlight 上的 CPU 密集型并行性,例如在后台线程上并行运行一堆(非 IO)代码。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Silverlight HttpWebRequest.Create 挂在异步块内 的相关文章

  • java inputstream 打印控制台内容

    sock new Socket www google com 80 out new BufferedOutputStream sock getOutputStream in new BufferedInputStream sock getI
  • 从 F# 调用 Newtonsoft.Json 出现意外结果

    我没有从该 F 代码中获得预期结果 我希望 t 包含调用 JsonSchema Parse json 的结果 但它是空的 我究竟做错了什么 open Newtonsoft Json open Newtonsoft Json Schema l
  • Ruby 中的任务/未来

    代表潜在延迟的异步计算并且可以订阅其完成的模式的惯用 Ruby 模拟是什么 即类似于 NET 的东西System Threading Task 或Python 3 xconcurrent futures future 请注意 这并不一定意味
  • 使用 Promise 对 Google 表格进行多次查询

    我是一名初学者编码器 需要一些帮助来加快我的 Google 表格查询速度 我环顾四周 找不到解决方案 我正在尝试快速对 Google 表格运行 25 个查询 这就是我的尝试方式 对 Google 工作表运行查询 将结果推送到数组 运行不同的
  • 调用许多网络服务的最佳方式?

    我有 30 家子公司 每家都实施了他们的 Web 服务 使用不同的技术 我需要实现一个Web服务来聚合它们 例如 所有子公司的Web服务都有一个名为的Web方法GetUserPoint int nationalCode 我需要实现我的网络服
  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include
  • WCF RIA 服务 - 返回两个已定义类的自定义类

    我有一个使用 EF 4 的 Silverlight WCF RIA 服务应用程序 当前 有一个域服务返回两种类型的类 OrderItem 和 Event 我想创建一个包含这两项的类 以便更轻松地在 XAML 级别操作数据 下面是结合了这两个
  • 确定我的 Silverlight 应用程序的版本

    我正在尝试确定 Silverlight 应用程序的版本号 目前我正在使用 string name Assembly GetExecutingAssembly FullName AssemblyName asmName new Assembl
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 什么是 Microsoft.Bcl.Async?

    什么是 Microsoft Bcl Async 它的用途是什么 我已经读过包装页面 https www nuget org packages Microsoft Bcl Async that 此包使 Visual Studio 2012 项
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 在操作之外执行异步操作 asp.net mvc

    我希望能够在每个请求上从云数据库加载用户 并使用 asp net mvc 在控制器中的请求上提供该用户 问题是当前框架不支持从操作过滤器执行异步操作 所以 OnActionExecuting OnAuthorization 方法不允许我这样
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 为什么 WP8 LongListSelector 错误地重用了 CheckBox 的选中状态?

    我有一个带有以下模板的 WP8 LongListSelector
  • 如何编写一个计算表达式生成器来累积值并允许标准语言构造?

    我有一个计算表达式生成器 可以随时生成值 并且有许多自定义操作 但是 它不允许标准 F 语言构造 并且我在弄清楚如何添加此支持方面遇到了很多麻烦 举一个独立的例子 下面是一个非常简单且毫无意义的构建 F 列表的计算表达式 type Item
  • Silverlight 打印中“对话框必须由用户启动”安全异常的另一个技巧

    当我尝试在 Silverlight 中打印一些内容时 我收到臭名昭著的 对话框必须由用户启动 安全异常 正如您所看到的 该对话框尽可能由用户启动 约翰爸爸也帮不了我太多 http johnpapa net silverlight print
  • 在 silverlight 中打开响应流

    我正在尝试使用 Silverlight 3 从服务器返回图像 服务器返回响应流 如下所示 context Response ContentType imageFactory ContentType imgStream WriteTo con
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • Play 框架:异步与同步性能

    我有以下代码 def sync Action val t0 System nanoTime Thread sleep 100 val t1 System nanoTime Ok Elapsed time t1 t0 1000000 0 ms

随机推荐