如何在C#中将事件添加到包装类?

时间:2011-04-18 21:20:02

标签: c# events delegates event-handling directsound

我正在使用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重新检查状态。

1 个答案:

答案 0 :(得分:4)

这里没有魔力;如果类型尚未公开事件,则必须轮询直到状态更改。这就是实施了多少事件。在某些时候,如果没有通过您的某个方法进行更改,您只需要注意更改(在这种情况下,您只需在设置/更改值时触发事件)。