C# 弹奏小星星之旅

需要添加外部引用 Windows Media Player,后缀为 .dll的

using WMPLib;

实现播放音乐文件效果。

 

 以上是音频文件,每个文件都是单独的一个钢琴音频。

实现代码

        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    ConsoleKeyInfo ck = Console.ReadKey(true);
                    char c = ck.KeyChar;
                    Console.WriteLine(c);
                    WindowsMediaPlayer wm = new WindowsMediaPlayer();
                    wm.URL = @"D:\VS\source\LittleStar\" + c + ".mp3";
                }catch(Exception e)
                {
                    
                }
                   
            }
        }

总结:这里面的try{ }catch(){ }并不是多余的,没错,运行会有错,报异常,这里只是抓出来,并没有处理

当同时快速的输入多个键时,有时能够弹奏出来,但有时就会报一个(解决“消息筛选器显示应用程序正在使用中。 ((错误来自 HRESULT: 0x8001010A(RPC_E_SERVERCALL_RETRYLATER)) ”的报错问题)的问题。

在尝试过加锁、线程休眠后发现效果不明显。因为这里线程已经完成了,出问题的时这个外部的 WindowsMediaPlayer 的问题。

尝试将 WindowsMediaPlayer wm = new WindowsMediaPlayer(); 这一句放在循环之外,但是这个播放的声音会随着下一个按键的到来终止,客户体验0分。

最后只能 try{ }catch 了,等以后知识丰富了,再来完善这里所欠缺的。

附上小星星简谱一份

 

posted @ 2022-07-12 15:44  xunzf  阅读(88)  评论(0)    收藏  举报