В январе прошлого года Филое добавил OnEndOfStream к FluentExtensions.cs, чтобы обнаружить конец потока в источнике волн или источнике сэмплов.Я хотел бы использовать эту опцию.
Ранее можно было перехватить «read == 0» в SingleBlockNotificationStream, а в Win7 это работало нормально.Теперь, когда я перехожу на Win10, это больше не работает, даже в программе, скомпилированной на W7.read==0
происходит много раз при чтении потока.
Мой источник был следующим:
//the SingleBlockNotificationStream is used to intercept the played samples
var notificationSource = new SingleBlockNotificationStream(source);
notificationSource.SingleBlockStreamFinished += (s, a) => EndOfStream = true;
, где я добавил SingleBlockStreamFinished к классу SingleBlockNotificationStream.
Решение Фило выглядит следующим образом:
/// <summary>
/// Registers an <paramref name="action"/> to be executed on end of stream of the <paramref name="sampleSource"/>.
/// </summary>
/// <param name="sampleSource">The <see cref="ISampleSource"/> to be tracked.</param>
/// <param name="action">The callback action with the <paramref name="sampleSource"/> as parameter.</param>
/// <returns>A wrapper around the <paramref name="sampleSource"/>.</returns>
public static ISampleSource OnEndOfStream(this ISampleSource sampleSource, Action<ISampleSource> action)
{
return new EofTrackingSampleSource(sampleSource, action);
}
Нет примера его использования, поэтому я застрял, и вместо того, чтобы часами пытаться угадать, что нужно: кто может написать мне те 2 или 3 утверждения, которые необходимы для установки моей переменной EndOfStream
в true
на конце потока?Возможно, я использовал Callbacks, но сам никогда не писал