Как я могу добавить события в обернутый класс в C #? - PullRequest
3 голосов
/ 19 апреля 2011

Я использую DirectSound framework и 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 для вызова метода Dispose () объекта SecondaryBuffer без необходимости перепроверки состояния с помощью Timer.

1 Ответ

4 голосов
/ 19 апреля 2011

Здесь нет магии; если тип еще не выставляет событие, вам придется опросить, пока состояние не изменится. Вот так много событий реализовано. В какой-то момент вам просто нужно следить за изменением, если изменение не происходит одним из ваших методов (в этом случае вы просто вызовете событие, когда значение было установлено / изменено).

...