8

在我将项目转换为可移植类库后,使用 xna 针对 xbox360 的 F# 代码无法编译。

let thread = Thread(fun () ->
    setAffinity()

线程得到红色曲线并且错误消息说

错误 1 ​​此类型没有可访问的对象构造函数

果然,如果我在对象资源管理器中查看 mscorlib,该类型没有构造函数。然而,根据MSDN,构造函数存在于 xbox 和 PCL 中。

编辑:我尝试使用 C# PCL,我得到了同样的错误。

4

3 回答 3

7

创建线程是不可移植的。您的链接是错误的,它没有谈论 PCL。

这是使用可移植类库的成本,它是减去至少一个可能的目标不支持的所有内容后剩下的成本。剩下的不多,PCL很小。最大的问题是实际上并未提及支持的目标,即 WinRT(又名 Metro)。它有一个严格限制的 api。

请考虑 ThreadPool.QueueUserWorkItem() 代替。我假设有一天 PCL 会支持 Task。这是一项正在进行中的工作。

于 2012-04-28T13:44:25.293 回答
1

不要油嘴滑舌,但这听起来像一个错误,这就是我要继续的方式。将其发送给 Microsoft dot com 的 fsbugs

于 2012-04-28T13:06:29.887 回答
0

在 .NET 4.0、SL5、Phone 7.5 中有一个支持异步的 BETA 版本。请参阅 David Kean 在此线程上的帖子:

Async CTP 可以与可移植库一起使用吗

以及 BCL 博客上的这篇文章:

http://blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-net-framework-4-5.aspx

于 2012-11-14T10:50:53.797 回答