Я даю пользователю возможность включить AudioGraph после того, как он нажмет кнопку тоста.Я использую метод OnActivation для получения обработчика нажатия кнопки тоста.
код идет так, как указано ниже
protected override async void OnActivated(IActivatedEventArgs args)
{
//CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => {
// var result = GetAutio().GetAwaiter().GetResult();
//});
if (args is ToastNotificationActivatedEventArgs)
{
var result = await Windows.Media.Audio.AudioGraph.CreateAsync(new AudioGraphSettings(AudioRenderCategory.Speech)
{
EncodingProperties = Windows.Media.MediaProperties.AudioEncodingProperties.CreatePcm(FREQUENCY, CHANNELS, BITS),
});
}
}
Проблема с приведенным выше кодом состоит в том, что CreateAsync занимает много временивремя для возврата, тогда как если я вызываю тот же код из нажатия кнопки, то для возврата требуется менее секунды.
Обработчик нажатия кнопки
private async void Button_Click(object sender, RoutedEventArgs e)
{
//System.Threading.Thread t = new System.Threading.Thread(() => {
var result = await Windows.Media.Audio.AudioGraph.CreateAsync(new AudioGraphSettings(AudioRenderCategory.Speech)
{
EncodingProperties = Windows.Media.MediaProperties.AudioEncodingProperties.CreatePcm(FREQUENCY, CHANNELS, BITS),
});
//var result1 = result.AsTask<CreateAudioGraphResult>().GetAwaiter().GetResult();
//result1.Graph.Stop();
//GetAutio().ConfigureAwait(false).GetAwaiter().GetResult();
}
Как показывает закомментированный код, у меня также естьпопробуйте запустить обработчик нажатия кнопки тоста с потоком пользовательского интерфейса, но для его инициализации потребуется больше времени.
Есть идеи, почему это происходит?
С уважением, Паван Тивари