Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var report           = new ComplexReport("42");
            var anotherReport    = new AnotherComplexReport();
            var eventBasedReport = new EventBasedReport();

            //Console.WriteLine("Let's build a report. Press any key to begin");
            //Console.ReadKey();

            //SyncReport(report);
            //AsyncReport(report);
            //MulticastReport(report);
            //ActionReport(report);
            //FuncReport(report);
            //AnotherReportProblem(anotherReport);
            //EventReport(eventBasedReport);
            //AnonymousEventReport(eventBasedReport);
            //LambdaEventReport(eventBasedReport);

            ProcessFun();
            //ThreadsFun();
            //RaceCondition1();
            //RaceCondition2();

            //CancelableReport(report);
            //SeveralReportsSimultaneously();
            //AsyncAwaitReport(report).Wait();

            while (true)
            {
                Console.WriteLine($"Echo: {Console.ReadLine()}");
                tokenSource.Cancel();
            }
        }
Ejemplo n.º 2
0
        private static void MulticastReport(ComplexReport report)
        {
            var myDelegate = new ReportResultDelegate(PrintReportResult);

            myDelegate += SendReportResult;
            //myDelegate.Invoke("none");

            report.BuildAsynchronously(myDelegate);
        }
Ejemplo n.º 3
0
        private static void AsyncReport(ComplexReport report)
        {
            //явное создание экземпляра делегата
            var myDelegate = new ReportResultDelegate(PrintReportResult);

            report.BuildAsynchronously(myDelegate);

            //инлайним создание делегата в параметр метода
            //report.BuildAsynchronously(new ReportResultDelegate(PrintReportResult));

            //неявное создание экземпляра делегата
            //report.BuildAsynchronously(PrintReportResult);
        }
Ejemplo n.º 4
0
 private static void CancelableReport(ComplexReport report) => report.BuildWithCancelation(tokenSource.Token);
Ejemplo n.º 5
0
 private static async Task AsyncAwaitReport(ComplexReport report)
 {
     PrintReportResult(await report.BuildReportAsync());
 }
Ejemplo n.º 6
0
        private static void SyncReport(ComplexReport report)
        {
            var result = report.BuildSynchronously();

            PrintReportResult(result);
        }
Ejemplo n.º 7
0
 private static void ActionReport(ComplexReport report)
 {
     report.BuildWithAction(PrintReportResult);
 }
Ejemplo n.º 8
0
 private static void FuncReport(ComplexReport report)
 {
     report.BuildWithFunc(RequestConfirmation);
 }