如何使用dirextx SecondaryBuffer 在后台播放?

我现在用SecondaryBuffer播放.wav格式音频,只能在焦点在窗体的情况下才能播放,如何设置可以在焦点不在窗体上也可以播放呢?我不可能一直把播放窗体放在最前面吧???
还有我写了个计时器按时用上面的方式播放音乐,当播放了几次后计时器就挂掉了。System.Timers.Timer,线程原因吗?怎么解决好呢?
部分代码:secDev = new Device();
secDev.SetCooperativeLevel(this, CooperativeLevel.Normal);

secBuffer = new SecondaryBuffer(objBC["url"], secDev);

secBuffer.Play(0, BufferPlayFlags.Default);

0

1个回答

查了半天资料,自己解决了~~~~~
DevicesCollection playerDevices = new DevicesCollection();
secDev = new Device(playerDevices[0].DriverGuid);
secDev.SetCooperativeLevel(this, CooperativeLevel.Normal);//设置设备协作级别

        BufferDescription buffDes = new BufferDescription();
        buffDes.GlobalFocus = true;//设置缓冲区全局获取焦点

        secBuffer = new SecondaryBuffer(objBC["url"],buffDes, secDev);//创建辅助缓冲区   
        secBuffer.Play(0, BufferPlayFlags.Default);//设置缓冲区为默认播放
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!