Есть альтернатива метода timer1_Tick? - C#

Узнай цену своей работы

Формулировка задачи:

Предположим у меня на форме есть label1 и мне нужно чтоб каждую минуту(или 2е) у меня играла музыка. Я так понял что used System.Media и Timer. Это понятно! А вот как вне Timera проверять условие и генерировать одноразово случайное число. Например: Запускает юзер форму и жмёт на кнопку СТРАТ. Тут генерируется случайное число от 5 до 100 (напр. 46) и через 46 секунд играла музыка. Когда я реализую это в timer1_Tick, то число случайное получается только 5 или если успевает 6. Это происходит из-за условия
if (i>interval)
{
SoundPlayer pl = new SoundPlayer(Properties.Resources._001);
interval = time.Next(5, 100);
}
В timer1_Tick каждую миллисекунду проверяется условие в течении 1 секунды и генерируется несколько случайных чисел interval = time.Next(5, 100); В итоге получается что обычно минимальное число попадает как случайное. По крайней мере у меня так. Есть другая функция(метод) которая проверяет посекундно или поминутно. С помощью timer1_Tick можно реализовать её, но вдруг есть такая.
Вот код!
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(максимальное число для генерации);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы