プログラミング(Python、Perl、C、Go、JavaScript)、数学、読書…
開発環境
"初めてのC# 第2版"の第17章(デリゲートとイベント)の17.6(練習問題)の17-1を解いてみる。
練習 17-1
using System; using System.Collections.Generic; using System.Text; using System.Threading; public class CountDownEventArgs : EventArgs { public readonly string message; public CountDownEventArgs(string message) { this.message = message; } } public class Clock { private DateTime start; private DateTime end; private string message; public Clock(int hours, int minutes, int seconds, string message) { this.start = DateTime.Now; TimeSpan span = new TimeSpan(hours, minutes, seconds); end = start + span; this.message = message; } public delegate void AlertHandler(object clock, CountDownEventArgs count); public AlertHandler Alert; public void Run() { for (; ; ) { Thread.Sleep(10); DateTime dt = DateTime.Now; if (dt > this.end) { CountDownEventArgs countDown = new CountDownEventArgs(this.message); if (Alert != null) { Alert(this, countDown); break; } } } } public class Display { public Display(Clock theClock) { theClock.Alert += new Clock.AlertHandler(TimeEnd); } public void TimeEnd(object theClock, CountDownEventArgs cd) { Console.WriteLine(cd.message); } } public class Tester { static void Main() { string message = "時間が経ちました"; Console.Write("待つ秒数を入力してください>>"); int seconds = Convert.ToInt32(Console.ReadLine()); Clock theClock = new Clock(0, 0, seconds, message); Display display = new Display(theClock); theClock.Run(); } } }
出力結果
待つ秒数を入力してください>>10 時間が経ちました 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿