我在看MSDN时,他说调用BlockingCollection.TryAdd()添加重复项会引发异常,会引发 InvalidOperationException。
它这个重复项指的时什么东西?
是指重复的数据吗? 可是我用下面的代码 往队列中添加3个同样的数据,并没有引发异常。
求各位大佬指点,谢谢!
以下是代码:
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace ParallelConsole
{
class Program
{
static BlockingCollection<int> blocking = new BlockingCollection<int>(10);
static void Main(string[] args)
{
try
{
for (int i = 0; i < 3; i++)
{
blocking.TryAdd(1); //添加3次 1,而不是i;
Console.WriteLine("数据添加成功,当前blocing中有{0}数据", blocking.Count);
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine("捕捉到异常:" + ex.Message);
} Console.ReadKey();
}
}
}
它这个重复项指的时什么东西?
是指重复的数据吗? 可是我用下面的代码 往队列中添加3个同样的数据,并没有引发异常。
求各位大佬指点,谢谢!
以下是代码:
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace ParallelConsole
{
class Program
{
static BlockingCollection<int> blocking = new BlockingCollection<int>(10);
static void Main(string[] args)
{
try
{
for (int i = 0; i < 3; i++)
{
blocking.TryAdd(1); //添加3次 1,而不是i;
Console.WriteLine("数据添加成功,当前blocing中有{0}数据", blocking.Count);
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine("捕捉到异常:" + ex.Message);
} Console.ReadKey();
}
}
}
这个不会报异常,而是返回false
{
if (blocking.TryAdd(1) == false) //添加3次 1,而不是i;
{
Console.WriteLine("数据发生重复,当前blocking中有{0}", blocking.Count);
}
else
{
Console.WriteLine("数据添加成功---,当前blocing中有{0}数据", blocking.Count); }
}但是并没有返回false,而是返回true。
说明它并没有排除重复项,那这个重复项到底是指什么?