Beispiel #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Creating 2 trackers...");
            Thread.Sleep(1000);
            var finalizable = new Finalizable();


            var weakTracker = new WeakReferenceTracker(finalizable, false);

            weakTracker.ReferenceDied += () => Console.WriteLine("Short weak reference is dead");
            //
            var resurectionTracker = new WeakReferenceTracker(finalizable, true);

            resurectionTracker.ReferenceDied += () => Console.WriteLine("Long weak reference is dead");

            Console.WriteLine("Forcing 0th generation GC...");
            GC.Collect(0);
            Thread.Sleep(100);

            Console.WriteLine("Forcing 1th generation GC...");
            GC.Collect(1);
            Thread.Sleep(100);

            // vor chjnji Tracker ner@
            GC.KeepAlive(weakTracker);
            GC.KeepAlive(resurectionTracker);

            //            Creating 2 trackers...
            //            Forcing 0th generation GC...
            //            Finalizable.dtor
            //            Short weak reference is dead
            //            Forcing 1th generation GC...
            //            Long weak reference is dead
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Driver dr1 = new Driver("Omegalul Kek", 17);
            Driver dr2 = new ExperiencedDriver("Omegalul Sas", 32);
            Driver dr3 = new Driver("Omegalul Sos", 12);

            Console.WriteLine("exception test");
            try { Driver dr4 = new ExperiencedDriver("Omegalul Kok", 18); }
            catch (SmallAgeException e) { Console.WriteLine("Low age excpetion caught: {0}, minimal age - {1}, entered age - {2}", e.Message, e.MinimalAge, e.InputAge); }


            DriverLicense lic1 = DriverLicense.CreateDriverLicense(dr1);
            DriverLicense lic2 = DriverLicense.CreateDriverLicense(dr2);
            DriverLicense lic3 = DriverLicense.CreateDriverLicense(dr3);

            if (lic3 == null)
            {
                Console.WriteLine("lic3 is null");
            }

            IPerson            dr5 = new ExperiencedDriver("p", 35);
            IDrivingExperience dr6 = new ExperiencedDriver("r", 34);

            Console.WriteLine(dr5.OverrallExperience);
            Console.WriteLine(dr6.OverrallExperience);

            AVehicle veh1 = new Motorcicle("hf7834h87h32487hc8", Categories.A1);
            AVehicle veh2 = new Car("hjkfdjkadhkjf2", Categories.B, "Lul car", 0, 1596, 88, false);

            dr1.AddVehicle(veh1);

            foreach (AVehicle veh in dr1.Vehicles)
            {
                Console.WriteLine(veh.VinCode);
            }

            Console.WriteLine("event, delegate test");
            Console.WriteLine("dr1 is_alive - {0}", dr1.IsAlive);
            Console.WriteLine("dr1 license is active - {0}", lic1.IsActive);
            Console.WriteLine("dr1 is driving - {0}", dr1.Drive("hf7834h87h32487hc8", 10));
            Console.WriteLine("dr1 is_alive - {0}", dr1.IsAlive);
            Console.WriteLine("dr1 license is active - {0}", lic1.IsActive);


            VehicleCollection vc1 = new VehicleCollection();

            Console.WriteLine("MaxGen {0}", GC.MaxGeneration);
            vc1.MakeGarbage();
            Console.WriteLine("Gen {0}", GC.GetGeneration(vc1));
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));
            GC.Collect(0);
            Console.WriteLine("Gen {0}", GC.GetGeneration(vc1));
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));
            GC.Collect(2);
            Console.WriteLine("Gen {0}", GC.GetGeneration(vc1));
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));


            VehicleCollection vc2 = null;

            Console.WriteLine("\nNext");
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));
            for (int j = 0; j < 10; j++)
            {
                vc2 = new VehicleCollection();
            }
            vc2 = null;
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));
            GC.Collect();
            Console.WriteLine("Mem {0}", GC.GetTotalMemory(false));
            GC.WaitForPendingFinalizers();

            Console.WriteLine("");
            WeakReferenceTracker tracker = new WeakReferenceTracker(new Data(10), false);

            tracker.ReferenceDied +=
                () => Console.WriteLine("Reference is dead");

            GC.Collect(0);
            Thread.Sleep(100);

            GC.KeepAlive(tracker);

            Console.WriteLine("\nPress any key");
            Console.ReadKey();
        }