Есть альтернатива метода 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(максимальное число для генерации);