播放随机mp3文件未知错误

时间:2010-07-09 00:31:26

标签: c#

当我只是调用该函数并播放文件时,这是有效的,但是如果我想从文件夹中选择一个随机mp3播放它就会停止说“索引超出了数组的范围”。

任何人都可以发现错误吗?

public void playrandomsound()
    {
        if (mp3 != null)
        {
            mp3.Dispose();
        }

        var files = new DirectoryInfo(Application.StartupPath).GetFiles(".mp3");
        int index = new Random().Next(0, files.Length);


        string filename = files[index].Name.ToString();      <-- App stops here

        string tune = string.Concat(Application.StartupPath, "//", fiilename);
        mp3 = new Audio(tune);
        mp3.Play();



    }

如果我在错误行上删除了“tostring”方法,它仍会给出相同的错误。

2 个答案:

答案 0 :(得分:3)

像Skurmedel所说,你需要防止空集合。但是,你遇到这个问题的原因是你的集合中没有任何.mp3文件。另一个错误在于:.GetFiles(".mp3")。你的意思是.GetFiles("*.mp3")

答案 1 :(得分:1)

ToString不是您的问题,您正在尝试访问阵列中不存在的位置。

我不知道你的数组在测试运行中包含了什么,但我看到了可能的罪魁祸首。如果文件为空且长度为零,该怎么办?意味着没有找到文件?您将从随机数生成器获得0并尝试在空数组中访问位置零。

通过检查files.Length < 1(或files.Length == 0)是否可以轻松避免这种情况,如果是的话,可以保释。