4

我想在可移植类库项目中使用 Interlocked 类的方法,根据 MSDN(here),可移植框架支持 Interlocked 类。不幸的是,似乎只有一部分互锁方法可用。例如,我既找不到“Read”,也找不到 Exchange(Int64,Int64)。有谁知道他们是隐藏在其他地方还是没有实施?如果是这样,为什么?

4

1 回答 1

2

可移植库是一种识别跨您目标平台可用的公共(子集)表面区域的方法,它不会公开或添加超出该子集的其他 API。这就是为什么有些成员不同的原因。

当 MSDN 说可移植支持给定 API 时,这实际上意味着当您选择某种平台组合时 API 可用。例如,在创建新的可移植类库时,在对话框中选择 .NET Framework 和 Windows 应用商店应用程序(而不是其他)时,可以使用这种情况下的 Interlocked.Read。不幸的是,我们知道这在文档中令人困惑,我们正在努力在未来改进它。

在 Visual Studio 2012 的 RTM 和当前 RC 构建的下层工具中,我们实际上公开了 Int64 版本的 Interlocked 方法,但是,我们有一个错误,即在针对 Windows Phone 时它​​们会被公开。这是不正确的,它们在 Windows Phone 中不起作用(调用时会抛出 NotSupportedException)。

于 2012-09-12T22:21:00.913 回答