Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将PFX Task.Factory.StartNew用于带有参数的F#函数?_.net_F# - Fatal编程技术网

.net 如何将PFX Task.Factory.StartNew用于带有参数的F#函数?

.net 如何将PFX Task.Factory.StartNew用于带有参数的F#函数?,.net,f#,.net,F#,使用编程手册,首先给出了一个串行示例: let result1 = longTask1() let result2= = LongTask2() 然后使用PFX,它被给出为 Open System.Threading.Tasks let taskBody = new Func<string>(longTask1) let task = Task.Factory.StartNew<string>(taskBody) let result2 = longTask2()

使用编程手册,首先给出了一个串行示例:

let result1 = longTask1()
let result2= = LongTask2()
然后使用PFX,它被给出为

Open System.Threading.Tasks

let taskBody = new Func<string>(longTask1)
let task = Task.Factory.StartNew<string>(taskBody)

let result2 = longTask2()
let result1 = task.Result

这显示Task.Factory.StartNew部分出错-参数太多。那么如何调用返回值的参数化函数呢?

这本书中的代码已经过时了。这本书是在VS2010发布之前写的,F#和PFX的一些部分还没有解决

现在你可以写:

let task = Task.Factory.StartNew(fun () -> readBlock(filePath))
类型检查器将为
任务
推断适当的类型,您可以调用
任务.Result
稍后获取结果


闭包和
System.Func
之间存在隐式转换,在这种情况下使用闭包更具可读性。

谢谢。作品将taskBody()替换为函数readBlock(),一切正常。我不知道那本书已经过时了。。。
let task = Task.Factory.StartNew(fun () -> readBlock(filePath))