diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f1e6f80
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+Задание 1
+
+Задание: Напишите класс Timer, который имеет событие типа EventHandler с именем Tick, которое возникает каждую секунду. Затем напишите класс Clock, который подписывается на это событие и выводит на консоль текущее время при каждом его возникновении. Затем напишите класс Counter, который также подписывается на это событие и увеличивает свое значение на единицу при каждом его возникновении. Продемонстрируйте работу этих классов в методе Main
+
+Результат:
+
+
diff --git a/kt8888/Program.cs b/kt8888/Program.cs
index dce78d0..47335f7 100644
--- a/kt8888/Program.cs
+++ b/kt8888/Program.cs
@@ -1,46 +1,38 @@
using System;
-using System.IO;
namespace kt8888
{
- public class BankAccount
+ public class Timer
{
- private decimal balance;
+ private System.Timers.Timer _timer;
- public decimal Balance
- {
- get { return balance; }
- private set
- {
- balance = value;
- BalanceChanged?.Invoke(balance);
- }
- }
+ public event EventHandler Tick;
- public event Action BalanceChanged;
-
- public void Deposit(decimal amount)
+ public Timer()
{
- Balance += amount;
+ _timer = new System.Timers.Timer(1000);
+ _timer.Elapsed += (s, e) => Tick?.Invoke(this, EventArgs.Empty);
}
- public void Withdraw(decimal amount)
+ public void Start() => _timer.Start();
+ public void Stop() => _timer.Stop();
+ }
+
+ public class Clock
+ {
+ public Clock(Timer timer)
{
- if (amount <= Balance)
- {
- Balance -= amount;
- }
+ timer.Tick += (s, e) => Console.WriteLine($"time: {DateTime.Now:T}");
}
}
- public class Logger
+ public class Counter
{
- public Logger(BankAccount account)
+ private int _count = 0;
+
+ public Counter(Timer timer)
{
- account.BalanceChanged += (balance) =>
- {
- File.AppendAllText("log.txt", $"balance {balance}\n");
- };
+ timer.Tick += (s, e) => Console.WriteLine($"count: {++_count}");
}
}
@@ -48,15 +40,15 @@ class Program
{
static void Main()
{
- BankAccount account1 = new BankAccount();
- Logger logger1 = new Logger(account1);
-
- account1.Deposit(1000);
- account1.Withdraw(500);
- account1.Deposit(300);
+ Timer timer1 = new Timer();
+ Clock clock1 = new Clock(timer1);
+ Counter counter1 = new Counter(timer1);
- Console.WriteLine("final balance " + account1.Balance);
+ timer1.Start();
+ Console.WriteLine("timer started press key for stop");
Console.ReadLine();
+ timer1.Stop();
+ Console.WriteLine("timer stopped");
}
}
}
\ No newline at end of file