public void TryMany(bool p, int cnt, int block, int delay) { var lst = new List <GDID>(); void body() { var gdids = m_Gen.TryGenerateManyConsecutiveGdids("scopeA", "seqA", block); if (!p) { gdids.See($"Size is: {gdids.Length}"); } lock (lst) lst.AddRange(gdids); if (!p) { m_Gen.GetSequenceInfos("scopeA").See(); } if (!p) { Conout.WriteLine("--------------------------------------"); } System.Threading.Thread.Sleep(delay); var gdid = m_Gen.GenerateOneGdid("scopeA", "seqA"); lock (lst) lst.Add(gdid); if (!p) { gdid.See(); } } if (p) { Parallel.For(0, cnt, i => body()); } else { for (var i = 0; i < cnt; i++) { body(); } } Conout.WriteLine("--------------------------------------"); Conout.WriteLine("--------------------------------------"); var gdid2 = m_Gen.GenerateOneGdid("scopeA", "seqA"); lst.Add(gdid2); gdid2.See(); m_Gen.GetSequenceInfos("scopeA").See(); "Total: {0}".SeeArgs(lst.Count); Aver.AreEqual(lst.Count, lst.Distinct().Count()); }
private void btnMany_Click(object sender, EventArgs e) { tbOutput.Text = ""; var sw = Stopwatch.StartNew(); var many = m_Generator.TryGenerateManyConsecutiveGdids(tbNamespace.Text, tbSequence.Text, tbManyCount.Text.AsInt(10)); var elapsedMs = sw.ElapsedTicks / ((double)Stopwatch.Frequency / 1000d); tbOutput.AppendText("Elapsed {0:n3}msec".Args(elapsedMs)); for (var i = 0; i < many.Length; i++) { tbOutput.AppendText("{0} {1}\r\n".Args(i, many[i])); } }