Я использую стороннюю библиотеку, которую не могу изменить, как она работает.
Это оболочка lib, которая позволяет мне настраивать видео фильтры, такие как яркость и контрастность видеофайлов, используя FFMPEG lib.
Я пытаюсь использовать ползунок / трекбар в WPF, чтобы предоставить ползунок для настройки уровня контрастности в этой библиотеке
У меня есть этот код
private async void TbeVolumeLevel_EditValueChanged(object sender,
DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
bool x = await _PlayerList[0].UpdateVideoFilter("eq=contrast="+
e.NewValue.ToString());
}
public async Task<bool> UpdateVideoFilter(string sFilter)
{
_Filter = sFilter;
x = await MEMediaPlayer.ChangeMedia();
return x;
}
это работает кратко (я вижу контраст изменения видео), прежде чем приложение просто закроется без ошибок или исключений.
Я включил все исключения в VS и ничего не попало в ловушку.
"ChangeMedia ();" является функцией в сторонней библиотеке lib, и из моего тестирования видно, что вызов ее слишком много раз, прежде чем она завершит свою функцию, вызывает проблему. Мое лучшее предположение - что-то вроде ситуации переполнения, приводящей к закрытию приложения.
Но если я использую этот код, приведенный ниже, я могу вызывать сколько угодно в быстром исполнении без проблем.
private async void BtnPlay_Click(object sender, RoutedEventArgs e)
{
for (int i = 1; i < 20; i++)
{
foreach (FFMEBaseVideoPlayer player in _PlayerList)
{
var x = await player.UpdateVideoFilter("eq=contrast=" + (i/10));
Debug.WriteLine(i);
}
}
}
это говорит мне о вызове player.UpdateVideoFilter изнутри события управления ползунком, оно не ожидает вызова функции, а выполняет параллельные вызовы при каждом изменении значения ползунка, приводящем к сбою
Так как я могу это сделать. Как обеспечить хороший пользовательский опыт, когда они могут плавно изменять значения с помощью ползунка, как и ожидал пользователь.
Мне нужно найти способ сделать так, чтобы код, вызываемый в управляющем событии, ожидал вызова ожидающего player.UpdateVideoFilter перед следующим выполнением.
Время, затраченное на ожидание возврата, недостаточно, насколько я вижу, чтобы заблокировать функцию управления ползунком. Мне просто нужно это дождаться.
Любой совет приветствуется.