C#如何让计时器正确打勾?

时间:2017-03-10 13:49:03

标签: c#

创建一个可以接受Youtube链接的应用程序并将它们添加到队列中然后播放它们直到队列为空。目前我的timer1_Tick似乎没有执行,我不知道为什么:(

//timer1_Tick
    private void timer1_Tick(object sender, EventArgs e)
{
        timer1.Stop();
        Video.Movie = "";
        q.Dequeue();
        qq.Dequeue();
}

这是肉和土豆

if (e.ChatMessage.Message.StartsWith("!songrequest"))
            {
                var myString = e.ChatMessage.Message.ToString();
                var newString = myString.Remove(0, myString.IndexOf(' ') + 1);
                var getID = newString.Remove(0, newString.IndexOf('=') + 1);
                var vUrl = "https://www.youtube.com/v/" + getID + "&autoplay=1";
                var vUrlString = vUrl.ToString();
                q.Enqueue(vUrlString);
                qq.Enqueue(getID.ToString());
                string[] array = new string[q.Count];
                string[] array2 = new string[qq.Count];
                q.CopyTo(array, 0);
                qq.CopyTo(array2, 0);

                if (timer1.Enabled == false)
                    {
                    for (int i = 0; i < array.Length; i++)
                        {
                         YouTubeVideo video = new Helix.YouTubeVideo(array2[i]);
                         var gDur = getDuration(video.duration);
                         string[] time = gDur.ToString().Split(' ');
                         int min = int.Parse(time[0]);
                         int sec = int.Parse(time[1]);
                         int msm = min * 60000;
                         int mss = sec * 1000;
                         int dur = msm + mss;
                         timer1.Interval = dur;

                         Video.Movie = array[i];
                        timer1.Start();
                        client.SendMessage("Now playing: " + video.title + ".");
                        client.SendMessage($"Timer set to { dur } ms.");
                    }
                  }
                  else
                  {
                    client.SendMessage("It's still running somehow.");
                  }

2 个答案:

答案 0 :(得分:0)

这里你正在检查禁用的计时器,只有当它没有启用它才会进入状态..

 if (timer1.Enabled == false)
                    {
                    for (int i = 0; i < array.Length; i++)
                        {
                         YouTubeVideo video = new Helix.YouTubeVideo(array2[i]);
                         var gDur = getDuration(video.duration);
                         string[] time = gDur.ToString().Split(' ');
                         int min = int.Parse(time[0]);
                         int sec = int.Parse(time[1]);
                         int msm = min * 60000;
                         int mss = sec * 1000;
                         int dur = msm + mss;
                         timer1.Interval = dur;

                         Video.Movie = array[i];
                        timer1.Start();
                        client.SendMessage("Now playing: " + video.title + ".");
                        client.SendMessage($"Timer set to { dur } ms.");
                    }
                  }

所以如果你在timer1.Start()上启动计时器,你需要先启用它。

  if (timer1.Enabled == false)
                        {
timer1.Enabled = true;
                        for (int i = 0; i < array.Length; i++)
                            {
                             YouTubeVideo video = new Helix.YouTubeVideo(array2[i]);
                             var gDur = getDuration(video.duration);
                             string[] time = gDur.ToString().Split(' ');
                             int min = int.Parse(time[0]);
                             int sec = int.Parse(time[1]);
                             int msm = min * 60000;
                             int mss = sec * 1000;
                             int dur = msm + mss;
                             timer1.Interval = dur;

                             Video.Movie = array[i];
                            timer1.Start();
                            client.SendMessage("Now playing: " + video.title + ".");
                            client.SendMessage($"Timer set to { dur } ms.");
                        }
                      }

答案 1 :(得分:0)

您需要启用计时器,默认为false。

caputure