我正在使用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;
}
}
没有事件,我必须使用Timer
并检查这样的状态;
if (!Buffer.Status.Playing)
{
Buffer.Dispose();
}
无论如何,我可以使用events
来调用SecondaryBuffer对象的Dispose()方法,而不必使用Timer
重新检查状态。
答案 0 :(得分:4)
这里没有魔力;如果类型尚未公开事件,则必须轮询直到状态更改。这就是实施了多少事件。在某些时候,如果没有通过您的某个方法进行更改,您只需要注意更改(在这种情况下,您只需在设置/更改值时触发事件)。