static void Main(string[] args) { XmlConfigurator.Configure(); var logger = LogManager.GetLogger("SampleTextLogger"); var loggerService = new LoggerService(logger); var quadraticProducer = new QuadraticCurvePointsProducer(loggerService); var cubicProducer = new CubicCurvePointsProducer(loggerService); var squareProducer = new SquareCurvePointsProducer(loggerService); var badProducer = new BadPointsProducer(loggerService); var randomProducer = new RandomPointProducer(loggerService); var client = new Client(); badProducer.onBadPointProduced += client.onPointReceive; badProducer.OnEqualZero += client.onPointReceive; badProducer.OnMoreTenYProduced += client.onPointReceive; var pointProducers = new List <IPointProducer>() { quadraticProducer /*, cubicProducer, squareProducer,*/, badProducer }; Console.WriteLine("Press Enter for escape log"); System.Threading.Thread.Sleep(2000); Registry registry = new Registry(pointProducers); new Logic().Run(registry); var sinCurveProducer = new SinCurvePointsProducer(loggerService); var disposePointProducers = new List <SinCurvePointsProducer>() { sinCurveProducer }; RegistryWithDispose disposeRegistry = new RegistryWithDispose(disposePointProducers); new Logic().RunWithDispose(disposeRegistry); Console.WriteLine("Press enter to run GC, step 1:"); Console.ReadLine(); GC.Collect(); Console.WriteLine("Press enter to run GC, step 1:done"); Console.ReadLine(); }
static void Main(string[] args) { XmlConfigurator.Configure(); var logger = LogManager.GetLogger("SampleTextLogger"); var loggerService = new LoggerService(logger); var quadraticProducer = new CustomPointsProducer(x => x * x, -3, 1); var scalingProducer = new CustomPointsProducer(x => x * 2, -3, 1); var cubicBadProducer = new BadPointsProducer(loggerService, x => x * x * x, -3, (decimal)0.5, x => x % 2 == 0); ProducerCancelingManager manager = new ProducerCancelingManager(); manager.Add(quadraticProducer, 'q'); manager.Add(scalingProducer, 'w'); manager.Add(cubicBadProducer, 'e'); Client client = new Client("BadProducerSubscriber"); client.StartListenToBadProducer(cubicBadProducer); Task.Run(() => { quadraticProducer.Run((point) => loggerService.Info($"Quadratic Function {point}")); }); Task.Run(() => { scalingProducer.Run((point) => loggerService.Info($"Scaling Function {point}")); }); Task.Run(() => { cubicBadProducer.Run((point) => loggerService.Info($"Cubic Function {point}")); }); ConsoleKeyInfo key = new ConsoleKeyInfo(); while (key.Key != ConsoleKey.Escape) { key = Console.ReadKey(true); manager.CancelProducer(key); } }
public void StartListenToBadProducer(BadPointsProducer producer) { producer.OnGoodPointProduced += this.Producer_OnGoodPointProduced; }