Есть альтернатива метода timer1_Tick? - C#
Формулировка задачи:
Предположим у меня на форме есть label1 и мне нужно чтоб каждую минуту(или 2е) у меня играла музыка. Я так понял что used System.Media и Timer. Это понятно! А вот как вне Timera проверять условие и генерировать одноразово случайное число. Например:
Запускает юзер форму и жмёт на кнопку СТРАТ. Тут генерируется случайное число от 5 до 100 (напр. 46) и через 46 секунд играла музыка. Когда я реализую это в timer1_Tick, то число случайное получается только 5 или если успевает 6. Это происходит из-за условия
В timer1_Tick каждую миллисекунду проверяется условие в течении 1 секунды и генерируется несколько случайных чисел interval = time.Next(5, 100); В итоге получается что обычно минимальное число попадает как случайное. По крайней мере у меня так. Есть другая функция(метод) которая проверяет посекундно или поминутно. С помощью timer1_Tick можно реализовать её, но вдруг есть такая.
if (i>interval) { SoundPlayer pl = new SoundPlayer(Properties.Resources._001); interval = time.Next(5, 100); }
Вот код!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Media; namespace FireWorks { public partial class Form1 : Form { //Глобальные переменные Double sekunda = 0, minuta = 0,hours = 0; // int interval; int nummus,nummin; DateTime sek = new DateTime(0); DateTime minut = new DateTime(0); DateTime hour = new DateTime(0); //--------------------- public Form1() { InitializeComponent(); } //***********функции*************** private void RndMus(int i,int y) { Random rnd = new Random(); nummus = rnd.Next(i, y); } private void RndMin(int ot, int doo) { Random rnd = new Random(); nummin = rnd.Next(ot, doo); } private void Minute() { minut = minut.AddSeconds(0.1); label3.Text = minut.ToString("mm"); minuta = Convert.ToDouble(label3.Text); } private void Hours() { hour = hour.AddSeconds(0.1); label4.Text = hour.ToString("HH"); hours = Convert.ToDouble(label4.Text); } private void Second() { sek = sek.AddSeconds(0.1); label1.Text = sek.ToString("ss"); sekunda = Convert.ToDouble(label1.Text); } private void Change() { switch (comboBox1.SelectedIndex) { case 0: if (sekunda >= nummin) { //sekunda = 0; sek = new DateTime(0); RndMus(1, 12); //***************************************** if (nummus == 1) { SoundPlayer fire = new SoundPlayer(Properties.Resources._001); fire.Play(); } else if (nummus == 2) { SoundPlayer fire = new SoundPlayer(Properties.Resources._002); fire.Play(); } else if (nummus == 3) { SoundPlayer fire = new SoundPlayer(Properties.Resources._003); fire.Play(); } else if (nummus == 4) { SoundPlayer fire = new SoundPlayer(Properties.Resources._004); fire.Play(); } else if (nummus == 5) { SoundPlayer fire = new SoundPlayer(Properties.Resources._005); fire.Play(); } else if (nummus == 6) { SoundPlayer fire = new SoundPlayer(Properties.Resources._006); fire.Play(); } else if (nummus == 7) { SoundPlayer fire = new SoundPlayer(Properties.Resources._007); fire.Play(); } else if (nummus == 8) { SoundPlayer fire = new SoundPlayer(Properties.Resources._008); fire.Play(); } else if (nummus == 9) { SoundPlayer fire = new SoundPlayer(Properties.Resources._009); fire.Play(); } else if (nummus == 10) { SoundPlayer fire = new SoundPlayer(Properties.Resources._010); fire.Play(); } else if (nummus == 11) { SoundPlayer fire = new SoundPlayer(Properties.Resources._011); fire.Play(); } else if (nummus == 12) { SoundPlayer fire = new SoundPlayer(Properties.Resources._012); fire.Play(); } else { SoundPlayer fire = new SoundPlayer(Properties.Resources._013); fire.Play(); } } break; case 1: if (minuta >= nummin) { // minuta = 0; minut = new DateTime(0); RndMus(1, 12); //***************************************** if (nummus == 1) { SoundPlayer fire = new SoundPlayer(Properties.Resources._001); fire.Play(); } else if (nummus == 2) { SoundPlayer fire = new SoundPlayer(Properties.Resources._002); fire.Play(); } else if (nummus == 3) { SoundPlayer fire = new SoundPlayer(Properties.Resources._003); fire.Play(); } else if (nummus == 4) { SoundPlayer fire = new SoundPlayer(Properties.Resources._004); fire.Play(); } else if (nummus == 5) { SoundPlayer fire = new SoundPlayer(Properties.Resources._005); fire.Play(); } else if (nummus == 6) { SoundPlayer fire = new SoundPlayer(Properties.Resources._006); fire.Play(); } else if (nummus == 7) { SoundPlayer fire = new SoundPlayer(Properties.Resources._007); fire.Play(); } else if (nummus == 8) { SoundPlayer fire = new SoundPlayer(Properties.Resources._008); fire.Play(); } else if (nummus == 9) { SoundPlayer fire = new SoundPlayer(Properties.Resources._009); fire.Play(); } else if (nummus == 10) { SoundPlayer fire = new SoundPlayer(Properties.Resources._010); fire.Play(); } else if (nummus == 11) { SoundPlayer fire = new SoundPlayer(Properties.Resources._011); fire.Play(); } else if (nummus == 12) { SoundPlayer fire = new SoundPlayer(Properties.Resources._012); fire.Play(); } else { SoundPlayer fire = new SoundPlayer(Properties.Resources._013); fire.Play(); } } break; case 2: if (hours >= nummin) { //hours = 0; hour = new DateTime(0); RndMus(1, 12); //***************************************** if (nummus == 1) { SoundPlayer fire = new SoundPlayer(Properties.Resources._001); fire.Play(); } else if (nummus == 2) { SoundPlayer fire = new SoundPlayer(Properties.Resources._002); fire.Play(); } else if (nummus == 3) { SoundPlayer fire = new SoundPlayer(Properties.Resources._003); fire.Play(); } else if (nummus == 4) { SoundPlayer fire = new SoundPlayer(Properties.Resources._004); fire.Play(); } else if (nummus == 5) { SoundPlayer fire = new SoundPlayer(Properties.Resources._005); fire.Play(); } else if (nummus == 6) { SoundPlayer fire = new SoundPlayer(Properties.Resources._006); fire.Play(); } else if (nummus == 7) { SoundPlayer fire = new SoundPlayer(Properties.Resources._007); fire.Play(); } else if (nummus == 8) { SoundPlayer fire = new SoundPlayer(Properties.Resources._008); fire.Play(); } else if (nummus == 9) { SoundPlayer fire = new SoundPlayer(Properties.Resources._009); fire.Play(); } else if (nummus == 10) { SoundPlayer fire = new SoundPlayer(Properties.Resources._010); fire.Play(); } else if (nummus == 11) { SoundPlayer fire = new SoundPlayer(Properties.Resources._011); fire.Play(); } else if (nummus == 12) { SoundPlayer fire = new SoundPlayer(Properties.Resources._012); fire.Play(); } else { SoundPlayer fire = new SoundPlayer(Properties.Resources._013); fire.Play(); } } break; default: // MessageBox.Show("По умолчанию выбрано: секунд(максимум 59)"); if (sekunda >= nummin) { sek = new DateTime(0); RndMus(1, 12); //***************************************** if (nummus == 1) { SoundPlayer fire = new SoundPlayer(Properties.Resources._001); fire.Play(); } else if (nummus == 2) { SoundPlayer fire = new SoundPlayer(Properties.Resources._002); fire.Play(); } else if (nummus == 3) { SoundPlayer fire = new SoundPlayer(Properties.Resources._003); fire.Play(); } else if (nummus == 4) { SoundPlayer fire = new SoundPlayer(Properties.Resources._004); fire.Play(); } else if (nummus == 5) { SoundPlayer fire = new SoundPlayer(Properties.Resources._005); fire.Play(); } else if (nummus == 6) { SoundPlayer fire = new SoundPlayer(Properties.Resources._006); fire.Play(); } else if (nummus == 7) { SoundPlayer fire = new SoundPlayer(Properties.Resources._007); fire.Play(); } else if (nummus == 8) { SoundPlayer fire = new SoundPlayer(Properties.Resources._008); fire.Play(); } else if (nummus == 9) { SoundPlayer fire = new SoundPlayer(Properties.Resources._009); fire.Play(); } else if (nummus == 10) { SoundPlayer fire = new SoundPlayer(Properties.Resources._010); fire.Play(); } else if (nummus == 11) { SoundPlayer fire = new SoundPlayer(Properties.Resources._011); fire.Play(); } else if (nummus == 12) { SoundPlayer fire = new SoundPlayer(Properties.Resources._012); fire.Play(); } else { SoundPlayer fire = new SoundPlayer(Properties.Resources._013); fire.Play(); } } break; } } //************************** private void timer1_Tick(object sender, EventArgs e) { RndMin(Convert.ToInt32(numericUpDown1.Text), Convert.ToInt32(numericUpDown2.Text)); //interval = Convert.ToInt32(numericUpDown1.Text); Second(); Hours(); Minute(); Change(); label2.Text = "Часовой, минутный и секундные интервалы НЕ ЗАВИСЯТ ДРУГ ОТ ДРУГА! Их данные: " + hours + " часов | " + minuta + " минут | " + sekunda + " секунд"; } private void button1_Click(object sender, EventArgs e) { if (timer1.Enabled == true) timer1.Enabled = false; else timer1.Enabled = true; } } }
Решение задачи: «Есть альтернатива метода timer1_Tick?»
textual
Листинг программы
var randomNumber = r.Next(максимальное число для генерации);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д