ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-11-02 19:08:07  阅读:160  来源: 互联网

标签:directsound event-handling delegates events 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有