コード例 #1
0
        public async Task PermiateAll()
        {
            var permutes = new HashSet <uint>();

            using (var queue = new ProducerConsumerQueue <uint>(uint.MaxValue)) {
                var permuteTask = new Task(() => {
                    for (long i = uint.MinValue; i < 10000000; i++)
                    {
                        queue.Put(UrlID.PermuteId((uint)i));
                        if (i % 1000000 == 0)
                        {
                            System.Console.WriteLine("Processed {0}", i);
                        }
                    }
                    queue.FinishedProducing();
                });

                var checkTask = new Task(() => {
                    while (!queue.HasFinishedProducing)
                    {
                        var toCheck = queue.Take();
                        Assert.AreEqual(false, permutes.Contains(toCheck), "Value {0} clashed".FormatWith(toCheck));
                        permutes.Add(toCheck);
                    }
                });

                permuteTask.Start();
                checkTask.Start();
                await Task.WhenAll(permuteTask, checkTask);
            }
        }
コード例 #2
0
ファイル: UrlIDTestForm.cs プロジェクト: Sphere10/Framework
 private async void _generateButton_Click(object sender, EventArgs e)
 {
     try {
         var writer = new TextBoxWriter(_textBoxEx);
         for (uint x = 1; x < 1000; x += 1)
         {
             await writer.WriteLineAsync(UrlID.Generate(x));
         }
     } catch (Exception error) {
         ExceptionDialog.Show(error);
     }
 }