C# 我怎样才能让计时器正确地计时?

C# 我怎样才能让计时器正确地计时?,c#,C#,制作一个应用程序,可以获取Youtube链接并将它们添加到队列中,然后播放它们,直到队列为空。目前,我的计时器似乎没有执行,我不确定原因:( 这是肉和土豆 if (e.ChatMessage.Message.StartsWith("!songrequest")) { var myString = e.ChatMessage.Message.ToString(); var newString = myStrin

制作一个应用程序,可以获取Youtube链接并将它们添加到队列中,然后播放它们,直到队列为空。目前,我的计时器似乎没有执行,我不确定原因:(

这是肉和土豆

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.");
                  }
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、 排队(vUrlString);
Enqueue(getID.ToString());
string[]数组=新字符串[q.Count];
string[]array2=新字符串[qq.Count];
q、 CopyTo(数组,0);
qq.CopyTo(array2,0);
如果(timer1.Enabled==false)
{
for(int i=0;i
这里您正在检查禁用的计时器,只有当它未启用时,它才会进入状态

 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.");
                    }
                  }
if(timer1.Enabled==false)
{
for(int i=0;i
所以,如果您要在timer1.Start()上启动计时器,则需要首先启用它

试一试

if(timer1.Enabled==false)
{
timer1.Enabled=true;
for(int i=0;i
您需要启用计时器,其默认值为false


你的勾号事件绑定在哪里?抱歉?我不确定我是否理解人们来到这里,复制并粘贴他们的大部分代码,甚至不复制相关部分(例如引用勾号处理程序的内容)----更重要的是,在发布之前,你甚至没有花5秒钟的时间格式化代码或删除不相关的内容?很抱歉,这很令人沮丧。别担心,检查我的ans,希望这有帮助:)抱歉,@caesay如果我不清楚我在做什么,我正在寻求指导。请原谅我的无知。我在帖子中包含了所有内容,因为我不确定什么是有用的或不相关的。你说的“喜欢什么引用了蜱虫处理程序”是什么意思?我(希望如此)调用计时器在队列中的下一个值出现后启动,然后它(应该但不应该)停止。看起来计时器正在启动但没有结束,我正在使用一个12秒的短视频来测试它。间隔设置为12000ms,但之后计时器似乎仍然没有设置视频。电影设置为Nothing这可能不是计时器停止的问题,但代码中出现了其他错误,请仔细查看并尝试放置messagebox如果TimeReTimk事件在你停止它之后被击中。如果你的基本的PROB被解决了,请考虑接受AN。)):使用<代码> MeaseBox。显示(“嘀嗒”);在调用计时器停止后,。但是消息框不表明你的嘀嗒事件不起作用,它应该被适当地引用,考虑删除这个滴答声并在GUI上双击Time1。(最简单的)否则修改设计参考这是如何做的,但只是以防万一,我删除了计时器,重新制作,双击它,并添加到旧的e
 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.");
                    }
                  }
  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.");
                        }
                      }