3

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

4

1 に答える 1

4

ここには魔法はありません。タイプがまだイベントを公開していない場合は、状態が変わるまでポーリングする必要があります。とにかく多くのイベントが実装されています。ある時点で、メソッドのいずれかを介して変更が発生していない場合は、変更を監視する必要があります (その場合、値が設定/変更されたときにイベントを発生させるだけです)。

于 2011-04-18T21:32:47.007 に答える