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(); } }
private static void MulticastReport(ComplexReport report) { var myDelegate = new ReportResultDelegate(PrintReportResult); myDelegate += SendReportResult; //myDelegate.Invoke("none"); report.BuildAsynchronously(myDelegate); }
private static void AsyncReport(ComplexReport report) { //явное создание экземпляра делегата var myDelegate = new ReportResultDelegate(PrintReportResult); report.BuildAsynchronously(myDelegate); //инлайним создание делегата в параметр метода //report.BuildAsynchronously(new ReportResultDelegate(PrintReportResult)); //неявное создание экземпляра делегата //report.BuildAsynchronously(PrintReportResult); }
private static void CancelableReport(ComplexReport report) => report.BuildWithCancelation(tokenSource.Token);
private static async Task AsyncAwaitReport(ComplexReport report) { PrintReportResult(await report.BuildReportAsync()); }
private static void SyncReport(ComplexReport report) { var result = report.BuildSynchronously(); PrintReportResult(result); }
private static void ActionReport(ComplexReport report) { report.BuildWithAction(PrintReportResult); }
private static void FuncReport(ComplexReport report) { report.BuildWithFunc(RequestConfirmation); }