如何使用线程计时器? ASP.NET

时间:2013-06-24 17:09:13

标签: asp.net multithreading thread-sleep

你好吗?

我需要在我的应用程序中使用两个命令,但是需要在它们之间以一段时间间隔执行。

我尝试使用线程解决我的问题,但不能。

这是代码:

protected void PlaySound()
    {
        List<string> distinctMusic = Music.GetMusicFile.Distinct().ToList();
        Thread thrd = new Thread(ThreadTimerMusic);

        for (int i = 0; i < distinctMusic.Count; i++)
        {
            ScriptManager.RegisterClientScriptBlock(Page, GetType(), "playSound", "playSound('" + distinctMusic[i] + "')", true);
            thrd.Start(); //Timer
            ScriptManager.RegisterClientScriptBlock(Page, GetType(), "stopSound", "stopSound()", true);
            i++;
        }
    }
 //Timer 5 seconds.
 public  void ThreadPlayMusic()
    {
        Thread.Sleep(5000);
    }

任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

以下参考是我评论的扩展版本。 :)

问题是:负责播放/停止音乐的代码(Javascript)在客户端执行

RegisterClientScriptBlock 在服务器上运行并且只生成上面的脚本,因此在服务器端延迟脚本的第二部分只会使客户端代码生成更长时间而不会对其工作方式产生任何影响在客户端。

解决方案是在Javascript中实现客户端代码本身内部的延迟。

模仿睡眠的标准方法是使用 setTimeout函数,所以这是最终代码:

ScriptManager.RegisterClientScriptBlock(Page, GetType(), "sleepTime",
"setTimeout(function() {stopSound();}," + Music.GetMusicDuration[i] * 1000 + ");", true);