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); } }
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); } }