.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))