在我将项目转换为可移植类库后,使用 xna 针对 xbox360 的 F# 代码无法编译。
let thread = Thread(fun () ->
setAffinity()
线程得到红色曲线并且错误消息说
错误 1 此类型没有可访问的对象构造函数
果然,如果我在对象资源管理器中查看 mscorlib,该类型没有构造函数。然而,根据MSDN,构造函数存在于 xbox 和 PCL 中。
编辑:我尝试使用 C# PCL,我得到了同样的错误。
在我将项目转换为可移植类库后,使用 xna 针对 xbox360 的 F# 代码无法编译。
let thread = Thread(fun () ->
setAffinity()
线程得到红色曲线并且错误消息说
错误 1 此类型没有可访问的对象构造函数
果然,如果我在对象资源管理器中查看 mscorlib,该类型没有构造函数。然而,根据MSDN,构造函数存在于 xbox 和 PCL 中。
编辑:我尝试使用 C# PCL,我得到了同样的错误。
创建线程是不可移植的。您的链接是错误的,它没有谈论 PCL。
这是使用可移植类库的成本,它是减去至少一个可能的目标不支持的所有内容后剩下的成本。剩下的不多,PCL很小。最大的问题是实际上并未提及支持的目标,即 WinRT(又名 Metro)。它有一个严格限制的 api。
请考虑 ThreadPool.QueueUserWorkItem() 代替。我假设有一天 PCL 会支持 Task。这是一项正在进行中的工作。
不要油嘴滑舌,但这听起来像一个错误,这就是我要继续的方式。将其发送给 Microsoft dot com 的 fsbugs
在 .NET 4.0、SL5、Phone 7.5 中有一个支持异步的 BETA 版本。请参阅 David Kean 在此线程上的帖子:
以及 BCL 博客上的这篇文章:
http://blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-net-framework-4-5.aspx