如何在c#中向包装类添加事件?

本文关键字:包装类 添加 事件 | 更新日期: 2023-09-27 17:50:35

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

如何在c#中向包装类添加事件?

这里没有魔法;如果该类型尚未公开事件,则必须轮询,直到状态发生变化。这就是实现的事件的数量。在某些情况下,如果更改没有通过您的某个方法发生,您只需要监视更改(在这种情况下,您只需在设置/更改值时触发事件)。