编程语言
首页 > 编程语言> > 如何在C#中将事件添加到包装的类中?

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

作者:互联网

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

播放声音后,我想处置SecondaryBuffer,但是,检查是否已完成播放的唯一方法是检查其状态.

我想创建一个事件,当SecondaryBuffer的Status为正确值时可以调用该事件.

这是包含我的包装类的代码段.

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

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

没有事件,我必须利用一个计时器并检查这样的状态.

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

无论如何,我可以使用事件来调用SecondaryBuffer对象的Dispose()方法,而不必使用计时器重新检查Status.

解决方法:

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

标签:directsound,event-handling,delegates,events,c
来源: https://codeday.me/bug/20191102/1993539.html