private static void CauseHandledException() { AppDomain.CurrentDomain.FirstChanceException += (sender, o) => { Console.Out.WriteLine("First Chance Exception"); Console.Out.WriteLine(); o.Exception.Print(Console.Out); }; AppDomain.CurrentDomain.UnhandledException += (sender, o) => { Console.Out.WriteLine("Unhandled Exception"); Console.Out.WriteLine(); (o.ExceptionObject as Exception).Print(Console.Out); }; try { NumberGenerator.CreateBigInteger(0); } catch (ArgumentException) { Console.Out.WriteLine(); Console.Out.WriteLine("ArgumentException Caught"); Console.Out.WriteLine(); } }
private static void CacheBigIntegers() { var handle = new ManualResetEvent(false); var cache = MemoryCache.Default; Console.Out.WriteLine("Polling interval: " + cache.PollingInterval); cache.Add("Value1", NumberGenerator.CreateBigInteger(50), new CacheItemPolicy() { SlidingExpiration = TimeSpan.FromSeconds(5) }); cache.Add(new CacheItem("Value2", NumberGenerator.CreateBigInteger(50)), new CacheItemPolicy() { SlidingExpiration = TimeSpan.FromSeconds(5), RemovedCallback = (arguments) => { Console.Out.WriteLine("Removal reason: " + arguments.RemovedReason); handle.Set(); } }); Console.Out.WriteLine(cache["Value1"].ToString()); Console.Out.WriteLine(cache["Value2"].ToString()); Console.Out.WriteLine("Waiting for Value2 to be removed at time {0}...", DateTime.Now.ToString("R")); handle.WaitOne(); Console.Out.WriteLine("Value2 was removed at time {0}...", DateTime.Now.ToString("R")); }
private static void TimeBigIntegerCreation() { for (var i = 1u; i < 1000000u; i *= 10u) { Console.Out.WriteLine("Digits: " + i + "\t\tTime: " + new Action(() => { var value = NumberGenerator.CreateBigInteger(i); }).Time()); } }
private static void CreateBigIntegers() { var x = NumberGenerator.CreateBigInteger(50); var y = NumberGenerator.CreateBigInteger(50); Console.Out.WriteLine("x = " + x); Console.Out.WriteLine("y = " + y); Console.Out.WriteLine("x + y = " + (x + y)); Console.Out.WriteLine("x - y = " + (x - y)); Console.Out.WriteLine("x * y = " + (x * y)); Console.Out.WriteLine("x / y = " + (x / y)); }
private static void PrettyPrintBigNumbers() { var numbers = new List <BigInteger>(); for (var i = 0; i < 10; i++) { numbers.Add(NumberGenerator.CreateBigInteger(10)); } var builder = new StringBuilder( string.Join <BigInteger>(", ", numbers)); Console.Out.WriteLine(builder); builder.Clear(); Console.Out.WriteLine(builder); }
private static void LazyBigNumbers() { var lazyNumber = new Lazy <BigInteger>(); Console.Out.WriteLine(lazyNumber.IsValueCreated); Console.Out.WriteLine(lazyNumber.Value); Console.Out.WriteLine(lazyNumber.IsValueCreated); Console.Out.WriteLine(lazyNumber.Value); Console.Out.WriteLine(); var lazyNumberWithFactory = new Lazy <BigInteger>(() => { return(NumberGenerator.CreateBigInteger(50)); }); Console.Out.WriteLine(lazyNumberWithFactory.IsValueCreated); Console.Out.WriteLine(lazyNumberWithFactory.Value); Console.Out.WriteLine(lazyNumberWithFactory.IsValueCreated); Console.Out.WriteLine(lazyNumberWithFactory.Value); }
private static void CreateBigIntegersConcurrently() { var values = new ConcurrentBag <BigInteger>(); var tasks = new List <Task>(); for (var i = 0; i < Environment.ProcessorCount * 2; i++) { tasks.Add(Task.Factory.StartNew(() => { values.Add(NumberGenerator.CreateBigInteger(2500)); })); } Task.WaitAll(tasks.ToArray()); var sortedValues = new SortedSet <BigInteger>(values); foreach (var value in sortedValues) { Console.Out.WriteLine(value); } }
private static void CreateBigIntegerWithOptions(string option) { CreationOptions options; if (!string.IsNullOrWhiteSpace(option)) { if (Enum.TryParse <CreationOptions>(option, out options)) { Console.Out.WriteLine(NumberGenerator.CreateBigInteger(5, options)); Console.Out.WriteLine("CreateOdd? " + options.HasFlag(CreationOptions.CreateOdd)); Console.Out.WriteLine("CreateEven? " + options.HasFlag(CreationOptions.CreateEven)); } else { Console.Out.WriteLine("You gave me a value, " + option + ", that doesn't map to a CreationOptions value."); } } else { Console.Out.WriteLine("You gave me an empty value or a value with only whitespace."); } }
private static void StreamBigIntegers() { using (var stream = new MemoryStream()) { for (var i = 0; i < 10; i++) { var number = NumberGenerator.CreateBigInteger(10).ToByteArray(); stream.Write(number, 0, number.Length); } stream.Position = 0; stream.Flush(); using (var newStream = new MemoryStream()) { stream.CopyTo(newStream); newStream.Position = 0; var data = new byte[newStream.Length]; newStream.Read(data, 0, data.Length); Console.Out.WriteLine(new BigInteger(data)); } } }