我在创建F#便携式项目时遇到问题,应该从C#便携式项目中引用.添加此类引用时,将显示以下消息:
无法添加对'PortableLibrary1'的引用.可移植库项目只能引用其他可移植库项目和程序集.
使用最新的Visual Studio 2015 Update 1(版本14.0.24720.00)可以轻松复制该问题.我也安装了Xamarin.
我可以使用以下可用的任何C#便携式项目重现该问题:
以及任何类型的F#可移植库项目,具有以下可用:
我使用与C#相同的配置文件和F#,没有任何帮助.
似乎之前已经存在这样的问题(如何从C#可移植类库(PCL)添加对F#可移植库的引用),然后成功修复了该问题.但它现在再次复制.
有人可以告诉我,我错过了什么吗?也许还需要额外安装一些东西?
我们有一个方法可以维护应用程序中所有事件的全局序列索引.因为它是网站,所以预计这种方法线程安全.线程安全实现如下:
private static long lastUsedIndex = -1;
public static long GetNextIndex()
{
Interlocked.Increment(ref lastUsedIndex);
return lastUsedIndex;
}
Run Code Online (Sandbox Code Playgroud)
但是我们注意到在一些不重负载的情况下,系统中出现了重复索引.简单测试显示,对于100000次迭代,大约有1500个重复项.
internal class Program
{
private static void Main(string[] args)
{
TestInterlockedIncrement.Run();
}
}
internal class TestInterlockedIncrement
{
private static long lastUsedIndex = -1;
public static long GetNextIndex()
{
Interlocked.Increment(ref lastUsedIndex);
return lastUsedIndex;
}
public static void Run()
{
var indexes = Enumerable
.Range(0, 100000)
.AsParallel()
.WithDegreeOfParallelism(32)
.WithExecutionMode(ParallelExecutionMode.ForceParallelism)
.Select(_ => GetNextIndex())
.ToList();
Console.WriteLine($"Total values: {indexes.Count}");
Console.WriteLine($"Duplicate values: {indexes.GroupBy(i => i).Count(g => g.Count() > …Run Code Online (Sandbox Code Playgroud)