Don't call the
Speak
method until the window's
Loaded
event fires:
public abc()
{
InitializeComponent();
qwe = new SpeechSynthesizer();
Loaded += Window_Loaded;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
qwe.Speak("Hello");
}
If that's still too soon, use the
Dispatcher
:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke((Action)() => qwe.Speak("Hello")), DispatcherPriority.ContextIdle, null);
}
Alternatively, use the
SpeechSynthesizer.SpeakAsync method[
^]:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
qwe.SpeekAsync("Hello");
}