Форма окна C# TextBox не отображает возвращаемую строку при нажатии кнопки - PullRequest
1 голос
/ 11 февраля 2020

У меня есть приложение в форме окна, которое выполнит функцию в другом файле (Voice.cs) и отобразит результат в текстовом поле при нажатии кнопки. Тем не менее, он не показывает строку в моем текстовом поле, и мое приложение заблокировано. Могу ли я узнать, что привело к этой проблеме.

Это моя кнопка в form.cs, которую нужно нажать для выполнения функции

private void VoiceStart_Click_2(object sender, EventArgs e)
    {
        string command = Voice.RecognizeSpeechAsync().Result;
        VoiceBox.Text = command;
    }

Это мой программный код в Voice.cs для выполнения речи распознавание:

class Voice
{
    public static async Task<string> RecognizeSpeechAsync()
    {
        var config = SpeechConfig.FromSubscription("xxxxxxxxxxxxxxxxxxxxx", "southeastasia");

        using (var recognizer = new SpeechRecognizer(config))
        {
            var result = await recognizer.RecognizeOnceAsync();
            return result.Text;

        }
    }


}

Нужно ли мне что-то настроить, чтобы оно отображалось и разморозить мое приложение?

enter image description here

1 Ответ

2 голосов
/ 11 февраля 2020

Не смешайте await и Result, сделайте VoiceStart_Click_2 существующим async:

//Side note: async void is a bad idea except event handlers
private async void VoiceStart_Click_2(object sender, EventArgs e)
{
    string command = await Voice.RecognizeSpeechAsync();
    VoiceBox.Text = command;
}
...