我正在使用DirectSound
框架和SecondaryBuffer
对象。我将SecondaryBuffer
对象包装在另一个类中,因为我还有其他一些要与SecondaryBuffer
关联的值。
播放声音后,我想处置SecondaryBuffer
,但是,检查是否已完成播放的唯一方法是检查其状态。
我想创建一个event
,当我的SecondaryBuffer
的Status是正确的值时可以调用它。
这是包含我的包装类的代码段。
public class WrappedBuffer
{
public SecondaryBuffer Buffer { get; set; }
//other variables here
public WrappedBuffer(SecondaryBuffer buffer, ... and more)
{
this.Buffer = buffer;
}
}
没有事件,我必须利用
Timer
并检查状态,例如:if (!Buffer.Status.Playing)
{
Buffer.Dispose();
}
无论如何,我可以使用
events
来调用SecondaryBuffer对象的Dispose()方法,而不必使用Timer
重新检查Status。 最佳答案
这里没有魔术;如果类型尚未公开事件,则必须轮询直到状态更改。无论如何,这就是实施了多少个事件。在某个时候,如果更改不是通过您的一种方法发生的,则只需要注意更改(在这种情况下,您将在设置/更改值时触发事件)。