本文整理汇总了C#中ConcurrentBag.Add方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentBag.Add方法的具体用法?C# ConcurrentBag.Add怎么用?C# ConcurrentBag.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConcurrentBag
的用法示例。
在下文中一共展示了ConcurrentBag.Add方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main(string[] args)
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(42);
bag.Add(21);
int result;
if (bag.TryTake(out result))
{
Console.WriteLine(result);
}
if (bag.TryPeek(out result))
{
Console.WriteLine("There is a next item: {0}", result);
}
if (bag.TryTake(out result))
{
Console.WriteLine(result);
}
Console.Write("Press a key to exit");
Console.ReadKey();
}
示例2: Main
static void Main(string[] args)
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(123);
bag.Add(321);
bag.Add(123123);
int result;
if (bag.TryTake(out result))
{
Console.WriteLine(result);
}
if (bag.TryTake(out result))
{
Console.WriteLine(result);
}
if (bag.TryPeek(out result))
{
Console.WriteLine("There is a next itam: {0}", result);
}
Console.ReadLine();
}
示例3: finish_successfully
public void finish_successfully()
{
var handling = new AsyncHandling(ObjectMother.InvocationContext());
var list = new ConcurrentBag<string>();
var task1 = Task.Factory.StartNew(() => {
Thread.Sleep(100);
list.Add("A");
});
var task2 = Task.Factory.StartNew(() => {
Thread.Sleep(100);
list.Add("B");
});
var task3 = Task.Factory.StartNew(() => {
Thread.Sleep(100);
list.Add("C");
});
handling.Push(task1);
handling.Push(task2);
handling.Push(task3);
handling.WaitForAll();
list.OrderBy(x => x).ShouldHaveTheSameElementsAs("A", "B", "C");
}
示例4: TestBasicScenarios
public static void TestBasicScenarios()
{
ConcurrentBag<int> cb = new ConcurrentBag<int>();
Task[] tks = new Task[2];
tks[0] = Task.Run(() =>
{
cb.Add(4);
cb.Add(5);
cb.Add(6);
});
// Consume the items in the bag
tks[1] = Task.Run(() =>
{
int item;
while (!cb.IsEmpty)
{
bool ret = cb.TryTake(out item);
Assert.True(ret);
// loose check
Assert.Contains(item, new[] { 4, 5, 6 });
}
});
Task.WaitAll(tks);
}
示例5: ParallelTest
public void ParallelTest()
{
var _NumberOfItems = 100000;
var _ConcurrentBag = new ConcurrentBag<UniqueTimestamps>();
var _Task1 = Task.Factory.StartNew(() =>
{
Parallel.For(0, _NumberOfItems, i =>
{
var _UniqueTS = new UniqueTimestamps();
_UniqueTS.ThreadId = Thread.CurrentThread.ManagedThreadId;
_UniqueTS.Timestamp = UniqueTimestamp.Ticks;
_ConcurrentBag.Add(_UniqueTS);
});
});
var _Task2 = Task.Factory.StartNew(() =>
{
Parallel.For(0, _NumberOfItems, j =>
{
var _UniqueTS = new UniqueTimestamps();
_UniqueTS.ThreadId = Thread.CurrentThread.ManagedThreadId;
_UniqueTS.Timestamp = UniqueTimestamp.Ticks;
_ConcurrentBag.Add(_UniqueTS);
});
});
Task.WaitAll(_Task1, _Task2);
var _NumberOfThreads = (from item in _ConcurrentBag select item.ThreadId ).Distinct().Count();
var _NumberOfTimestamps = (from item in _ConcurrentBag select item.Timestamp).Distinct().Count();
Assert.AreEqual(_NumberOfThreads, Environment.ProcessorCount);
Assert.AreEqual(_NumberOfTimestamps, 2 * _NumberOfItems);
}
示例6: DemoConcurrentBag
private static void DemoConcurrentBag()
{
Console.WriteLine("Demo Concurrent Bag ----------------------");
var shirts = new ConcurrentBag<string>();
shirts.Add("Pluralsight");
shirts.Add("WordPress");
shirts.Add("Code School");
Console.WriteLine("After enqueuing, count = " + shirts.Count);
string item1; //= shirts.Dequeue();
bool success = shirts.TryTake(out item1);
if (success)
Console.WriteLine("\r\nRemoving " + item1);
else
Console.WriteLine("queue was empty");
string item2; //= shirts.Peek();
success = shirts.TryPeek(out item2);
if (success)
Console.WriteLine("Peeking " + item2);
else
Console.WriteLine("queue was empty");
Console.WriteLine("\r\nEnumerating:");
foreach (string item in shirts)
Console.WriteLine(item);
Console.WriteLine("\r\nAfter enumerating, count = " + shirts.Count);
}
示例7: TestBasicScenarios
public static void TestBasicScenarios()
{
ConcurrentBag<int> cb = new ConcurrentBag<int>();
Task[] tks = new Task[2];
tks[0] = Task.Run(() =>
{
cb.Add(4);
cb.Add(5);
cb.Add(6);
});
// Consume the items in the bag
tks[1] = Task.Run(() =>
{
int item;
while (!cb.IsEmpty)
{
bool ret = cb.TryTake(out item);
Assert.True(ret);
// loose check
if (item != 4 && item != 5 && item != 6)
{
Assert.False(true, "Expected: 4|5|6; actual: " + item.ToString());
}
}
});
Task.WaitAll(tks);
}
示例8: ThenAllTheConferencesAreCreated
public void ThenAllTheConferencesAreCreated()
{
var failureCollector = new ConcurrentBag<string>();
Parallel.ForEach(slugs, s =>
{
var mConf = ConferenceHelper.FindConference(s);
if(mConf == null)
{
failureCollector.Add(string.Format("Conference with slug '{0}' not found in management repository.", s));
return;
}
var success = MessageLogHelper.CollectEvents<AvailableSeatsChanged>(mConf.Id, seatsInfo.Rows.Count);
if(!success)
{
failureCollector.Add(string.Format("Some seats were not found in Conference '{0}'", mConf.Name));
}
});
if(failureCollector.Count > 0)
{
var sb = new StringBuilder();
failureCollector.ToList().ForEach(s => sb.AppendLine(s));
Assert.True(failureCollector.Count == 0, sb.ToString()); // raise error with all the failures
}
}
示例9: AddItemTwice
public void AddItemTwice()
{
var bag = new ConcurrentBag<string>();
bag.Add("TEST");
bag.Add("TEST");
Assert.AreEqual(2, bag.Count);
}
示例10: World
public World()
{
worldTime = new DateTime();
rooms = new List<Room>();
rooms.Add(new Room("The Void", "You are standing in the middle of nothing."));
mobs = new ConcurrentBag<NPC>();
NPC test = new NPC("mob", "A slimy sticky stinky mob", new Stats(50, 100), this);
rooms.First().addNPC(test);
mobs.Add(test);
test = new NPC("bob", "A slimy sticky stinky bob", new Stats(50, 100), this);
rooms.First().addNPC(test);
mobs.Add(test);
test = new NPC("sob", "A slimy sticky stinky sob", new Stats(50, 100), this);
rooms.First().addNPC(test);
mobs.Add(test);
test = new NPC("cob", "A slimy sticky stinky cob", new Stats(50, 100), this);
rooms.First().addNPC(test);
mobs.Add(test);
Merchant merch = new Merchant();
merch.name = "merchant";
merch.description = "a merchant of souls";
merch.world = this;
merch.stats = new Stats(10000, 10000);
Item i = new Item("health", "a potion of restore health", 1, "none", 1);
merch.items.addToInventory(i);
rooms.First().addNPC(merch);
mobs.Add(merch);
rooms.First().addItem(new Item("leggings", "a worn pair of leather leggings", 2, "legs", 2));
}
示例11: Compare
/// <summary>
/// </summary>
/// <returns></returns>
/// <exception cref="AggregateException">The exception that contains all the individual exceptions thrown on all threads.</exception>
public List<FileInfo> Compare()
{
var listFromSetting = ConvertPathsFromSettingToDictionary();
//var newer = new List<FileInfo>();
var newer = new ConcurrentBag<FileInfo>();
var listFromFileSystem = ListFromFileSystem();
if (listFromSetting.Any() && listFromFileSystem.Any())
{
Parallel.ForEach(listFromFileSystem,
path =>
{
var file = new FileInfo(path);
if (listFromSetting.Any(item => item.Path == path))
{
var fromSetting = listFromSetting.First(list => list.Path == path);
if (File.Exists(fromSetting.Path) && fromSetting.LastWriteTime < file.LastWriteTime)
{
newer.Add(file);
}
}
else
{
newer.Add(file);
}
});
}
return newer.ToList();
}
示例12: AllPartitionsInParallelTest
/// <summary>
/// Создает тест с набором партиций и с возможными собственными шаблоном запроса и соединения
/// </summary>
/// <param name="query"> </param>
/// <param name="connection"> </param>
public AllPartitionsInParallelTest(string query = null,string connection=null)
{
_subtests = new ConcurrentBag<SinglePartitionQueryingTest>();
for (var year = START_YEAR; year <= END_YEAR; year++) {
_subtests.Add(new SinglePartitionQueryingTest(year, HalfYear.First, query,connection));
_subtests.Add(new SinglePartitionQueryingTest(year, HalfYear.Second, query,connection));
}
}
示例13: Example2
private void Example2()
{
Console.WriteLine("With List multithreading throws an error");
//List<int> list = new List<int>();
//Task.Run(() =>
//{
// list.Add(21);
// Thread.Sleep(250);
// list.Add(43);
// Thread.Sleep(500);
// list.Remove(21);
// Thread.Sleep(500);
// list.Add(63);
//});
//Task.Run(() =>
//{
// //foreach (int i in list)
// //{
// // Thread.Sleep(500);
// // Console.WriteLine(i);
// //}
// for(int i=0;i<list.Count;i++)
// {
// Thread.Sleep(500);
// Console.WriteLine(list[i]);
// }
//}).Wait();
Console.WriteLine("With Concurrent Bag");
ConcurrentBag<int> concurrentBag = new ConcurrentBag<int>();
int result;
Task.Run(() =>
{
concurrentBag.Add(21);
concurrentBag.Add(33);
Thread.Sleep(250);
concurrentBag.Add(43);
Thread.Sleep(500);
concurrentBag.Add(53);
concurrentBag.TryTake(out result);
Thread.Sleep(500);
concurrentBag.Add(63);
});
Task.Run(() =>
{
foreach (int i in concurrentBag)
{
Thread.Sleep(500);
Console.WriteLine(i);
}
}).Wait();
}
示例14: Run
public void Run()
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(42);
bag.Add(21);
int result;
if (bag.TryTake(out result))
Console.WriteLine(result);
if (bag.TryPeek(out result))
Console.WriteLine("There is a next item: {0}", result);
}
示例15: ConcurrentCollectionTest
//ConcurrentCollectionTest
public static void ConcurrentCollectionTest()
{
ConcurrentBag<string> bag = new ConcurrentBag<string>();
bag.Add("just a test!");
bag.Add("abc");
bag.Add("ARCAS");
string result;
bag.TryPeek(out result);
Console.WriteLine(result);
BlockingCollection<string> collection = new BlockingCollection<string>();
}