如何防止软件中的stackoverflow异常?

时间:2017-05-24 05:50:03

标签: c#

我有一个音频播放器,可以加载配置文件,其中包含要以特定间隔播放的文件列表。就像5个文件应该在09:30到11:30之间循环 - 这是一个需要背景音乐的图书馆应用程序。

当我在一个区间之外时,我会遍历所有时间间隔(可能在下一个间隔开始前2小时)然后如果我发现现在没有任何东西可以播放 - 我会睡一会然后再尝试试。

我有一个问题,在检查这些时间间隔大约3-4个小时之后我会得到堆栈溢出(通常是在晚上,因为客户端已开启,但晚上没有音乐播放)。

private void PlayNextFile()
{
    Application.DoEvents();
    if (currentState == PlayerState.Started)
    {
        //if we find the next slide then play it
        AudioSlide slideToPlay = FindNextSlide();
        if(slideToPlay != null)
        {
            PlaySlide(slideToPlay);
        }
        else
        {
            MedianLog.Log.Instance.LogDebug("Did not find a slide to play now, will check again in a second");
            System.Threading.Thread.Sleep(1000);
            PlayNextFile();
        }               
    }
}

有关如何解决此异常的任何想法吗?

1 个答案:

答案 0 :(得分:0)

你只是用不受控制的递归调用来填充你的堆栈。

while循环将是一个更好的解决方案。 这样的事情应该正确地做到:

.htaccess