public class MyTimerData { public int delay { get; set; } public string parameter { get; set; } } class ex_program { static void Main(string[] args) { List<MyTimerData> MyTimers = new List<MyTimerData>(); MyTimers.Add(new MyTimerData()); MyTimers.Last().delay = 1000; MyTimers.Last().parameter = "AVS"; MyTimers.Add(new MyTimerData()); MyTimers.Last().delay = 5000; MyTimers.Last().parameter = "4658sss"; foreach (var t in MyTimers) { var timer = new System.Timers.Timer(t.delay); timer.Elapsed += OnTimeout; timer.AutoReset = true; timer.Enabled = true; } Console.WriteLine("Π˜Π΄Π΅Ρ‚ запись . . ."); Console.WriteLine("НаТмитС ENTER Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹"); Console.Read(); } static void OnTimeout(object sender, System.Timers.ElapsedEventArgs e) { var str = new[] { ((MyTimers)sender).Parameter.ToString() }; string path = @"c:\ΠΏΡ€ΠΈΠΌΠ΅Ρ€.txt"; if (!File.Exists(path)) File.WriteAllLines(path, str); else File.AppendAllLines(path, str); } } } 

I have an error

 (MyTimers) => var str = new[] { ((MyTimers)sender).Parameter.ToString() }; 

    1 answer 1

    This problem has two solutions:

    1) Through the Key-Value bundle, you can use a Dictionary or KeyValuePair. But it will not be very beautiful, in my opinion.

    2) Create your own timer, sample code below.

     public class MyTimer : System.Timers.Timer { public object Parameter { get; set; } } static void Main(string[] args) { List<MyTimer> MyTimers = new List<MyTimer>(); MyTimers.Add(new MyTimer()); MyTimers.Last().Interval = 1000; MyTimers.Last().Parameter = "AVS"; MyTimers.Add(new MyTimer()); MyTimers.Last().Interval = 5000; MyTimers.Last().Parameter = "4658sss"; foreach(var timer in MyTimers) { timer.Elapsed += OnTimeout; timer.AutoReset = true; timer.Enabled = true; } Console.WriteLine("Π˜Π΄Π΅Ρ‚ запись . . ."); Console.WriteLine("НаТмитС ENTER Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹"); Console.Read(); } static void OnTimeout(object sender, System.Timers.ElapsedEventArgs e) { var str = new[] { ((MyTimer)sender).Parameter.ToString() }; string path = @"c:\ΠΏΡ€ΠΈΠΌΠ΅Ρ€.txt"; if(!File.Exists(path)) File.WriteAllLines(path, str); else File.AppendAllLines(path, str); } 
    • why i have a mistake - propro17
    • everything is working!!! Thank you)) - propro17