小编Bri*_*ian的帖子

Silverlight HttpWebRequest.Create在异步块内挂起

我正在尝试从Silverlight(4)将Rpc调用原型化为JBOSS网络服务器.我编写了代码,它正在一个控制台应用程序中工作 - 所以我知道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 
Run Code Online (Sandbox Code Playgroud)

它可能是一个沙盒问题,因为我的Silverlight是从我的文件系统提供的,而Uri是对本地主机的引用 - 尽管我甚至没有得到例外.思考?

谢谢


更新1

我创建了一个新项目并移植了我的代码,现在它正在工作; 关于F#Silverlight集成的东西必须是不稳定的.仍然会欣赏有关在旧模型中调试"悬挂"网页的想法...


更新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 …
Run Code Online (Sandbox Code Playgroud)

silverlight f# asynchronous httpwebrequest silverlight-4.0

10
推荐指数
2
解决办法
1125
查看次数

F#构造函数不接受元组?

我尝试使用元组来创建F#中定义的类的新实例.为了复制问题,我尝试了以下代码.

type test(x: int, y:int) =
    let distance =
        x * x + y * y |> float |> sqrt
    new (x: int, y:int, z:int) =
        new test(x, y)
let args = 1, 2
let test2 = new test(args)
Run Code Online (Sandbox Code Playgroud)

它抱怨说

错误1成员或对象构造函数'test'不带1个参数.发现过载有2个参数.

如果我删除非默认构造函数,一切都很好.我不明白为什么它变成两个/三个参数而不是元组.

非常感谢你.

f# constructor tuples

10
推荐指数
2
解决办法
548
查看次数

在Visual Studio 2010中使用MSBuild 3.5

如何强制Visual Studio 2010使用MSBuild 3.5而不是新的4.0?

msbuild visual-studio-2010

9
推荐指数
1
解决办法
1万
查看次数

VS 2010大写使用键盘快捷方式突出显示文字?

我有一个突出显示的字符串,我想切换例如Upper/Lower的情况.这是否可以在vs 2010中使用键盘快捷键?

visual-studio-2010

9
推荐指数
1
解决办法
4387
查看次数

F#html解析

在F#中解析html目前还有哪些其他选择?目前有一些正则表达式,但更喜欢Pythons Beautiful Soup http://www.crummy.com/software/BeautifulSoup/之类的东西,或者能够使用类似于F#的jQuery的api.

我已经看过fslex和fparsec,但我不确定是否有其他人已经用这些构建了一些html解析库,或者我必须编写自己的.

html f# parsing html-parsing

9
推荐指数
1
解决办法
2600
查看次数

使用异步工作流并行化的最佳实践

让我们说我想刮一个网页,并提取一些数据.我最有可能写这样的东西:

let getAllHyperlinks(url:string) =
    async {  let req = WebRequest.Create(url)
             let! rsp = req.GetResponseAsync()
             use stream = rsp.GetResponseStream()             // depends on rsp
             use reader = new System.IO.StreamReader(stream)  // depends on stream
             let! data = reader.AsyncReadToEnd()              // depends on reader
             return extractAllUrls(data) }                    // depends on data
Run Code Online (Sandbox Code Playgroud)

let!讲述F#在另一个线程来执行代码,然后将结果结合到一个变量,并继续处理.上面的示例使用两个let语句:一个用于获取响应,一个用于读取所有数据,因此它至少生成两个线程(如果我错了,请纠正我).

虽然上面的工作流程会产生多个线程,但执行顺序是串行的,因为工作流程中的每个项目都依赖于前一个项目.在其他线程返回之前,无法在工作流程中进一步评估任何项目.

let!在上面的代码中有多个有什么好处?

如果没有,该代码如何更改以利用多个let!语句?

f# asynchronous async-workflow

8
推荐指数
1
解决办法
1268
查看次数

F#:'关键字'时总是"意外"

VS2010 Beta 2 F#编译器总是抱怨我对when关键字的使用,即使使用应该起作用的复制粘贴代码,例如这些代码段中的任何一个.例如,这是我在尝试执行一个非常简单的表达式时得到的错误:

"错误FS0010:表达式中出现'意外关键字'.预期' - >'或其他标记."

[for i in 1..50 when i < 10 -> i]  
---------------^^^^
Run Code Online (Sandbox Code Playgroud)

syntax f# visual-studio-2010-beta-2

8
推荐指数
2
解决办法
1767
查看次数

如何为F#应用程序编写退出处理程序?

主题说明了一切.

如果我的应用程序被^ C终止,我想要运行一些代码.

.net f# exit-handler

8
推荐指数
1
解决办法
949
查看次数

是否可以自定义RockScroll的变量语法高亮显示的颜色?

有些人知道RockScroll Visual Studio插件非常棒.它将您的滚动条变为代码的迷你预览,并提供Eclipse功能,突出显示您在代码中双击的任何单词.

问题是RockScroll的作者选择了一种非常难以看到的颜色,几乎无法实现这种酷炫且非常有用的功能.

所以我的问题是.是否可以自定义颜色或以某种方式指定自己的颜色?

请继续关注,因为我回答了自己的问题并找到了方法!

syntax-highlighting visual-studio

7
推荐指数
1
解决办法
1378
查看次数

如何实现与Dictionary.TryGetValue相同的行为

所以,给出以下代码

type MyClass () =
  let items = Dictionary<string,int>()
  do 
    items.Add ("one",1)
    items.Add ("two",2)
    items.Add ("three",3)
  member this.TryGetValue (key,value) =
    items.TrygetValue (key,value)
let c = MyClass () 

let d = Dictionary<string,int> ()
d.Add ("one",1)
d.Add ("two",2)
d.Add ("three",3)
Run Code Online (Sandbox Code Playgroud)

以及以下测试代码

let r1,v1 = d.TryGetValue "one"
let r2,v2 = c.TryGetValue "one"
Run Code Online (Sandbox Code Playgroud)

r1,v1行正常工作.r2,v2线炸弹; 抱怨c.TryGetValue必须给出一个元组.有趣的是,在每行中,TryGetValue的签名是不同的.如何让我的自定义实现显示与BCL版本相同的行为?或者,问另一种方式,因为F#有(隐含的)的元组参数,令行禁止参数和BCL参数的概念,我知道如何咖喱和元组风格的区分,我怎么能强迫第三样式(一拉BCL方法)?

如果不清楚,请告诉我.

.net implementation f# byref out-parameters

7
推荐指数
1
解决办法
1655
查看次数