1

你好吗?

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

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

这是代码:

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);
    }

谁能帮我?

谢谢 !

4

1 回答 1

0

供将来参考,这里是我评论的扩展版本。:)

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

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

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

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

ScriptManager.RegisterClientScriptBlock(Page, GetType(), "sleepTime",
"setTimeout(function() {stopSound();}," + Music.GetMusicDuration[i] * 1000 + ");", true);
于 2013-06-24T19:48:53.913 回答