3

我正在使用DirectSound框架和SecondaryBuffer对象。我将SecondaryBuffer对象包装在另一个类中,因为我有一些其他值要与我的SecondaryBuffer.

播放声音后,我想处理SecondaryBuffer,但是,检查它是否完成播放的唯一方法是检查它的状态。

我想创建一个当我的状态是正确值event时可以调用的。SecondaryBuffer

这是包含我的包装类的片段。

public class WrappedBuffer
{
    public SecondaryBuffer Buffer { get; set; }
    //other variables here

    public WrappedBuffer(SecondaryBuffer buffer, ... and more)
    {
        this.Buffer = buffer;            
    }
}

没有事件,我必须使用 aTimer并检查这样的状态;

if (!Buffer.Status.Playing)
{
     Buffer.Dispose();
}

无论如何,我可以events用来调用 SecondaryBuffer 对象的 Dispose() 方法,而无需使用Timer.

4

1 回答 1

4

这里没有魔法;如果该类型尚未公开事件,那么您将不得不轮询直到状态发生变化。无论如何,这就是实现了多少事件。在某些时候,如果更改没有通过您的一种方法发生,您只需注意更改(在这种情况下,您只需在设置/更改值时触发事件)。

于 2011-04-18T21:32:47.007 回答