Измените строковое значение, прежде чем продолжить с кодом - PullRequest
0 голосов
/ 27 февраля 2019

У меня проблемы с асинхронностью, заданием и ожиданием.

Вот как выглядит мой код:

    private void nextBtn_Tapped(object sender, RoutedEventArgs e)
    {
        box.Text = "Searching..."
        DoForwardSearch();
    }

Теперь моя проблема в том, что изменение текста происходит насамый конец в }, но это слишком поздно.Мой текст должен измениться до DoForwardSearch().Как мне это сделать?

Я пытался использовать Task, async и await, но я не использую это правильно.Я попытался изменить nextBtn_Tapped на private async void и написать в нем так:

box.Text = await searchText();

, но как мне настроить searchText()?

Я попробовал это:

    private async System.Threading.Tasks.Task<string> searchtext()
    {
        string x = await "Searching...";
        return x;
    }

, но это не так.

    private async System.Threading.Tasks.Task<string> searchtext()
    {
        return "searching...";
    }

работает по кодам, но при запуске кода изменение текста происходит так же поздно, как и раньше ... в конце } из nextBtn_Tapped

edit

одно решение, которое мне удалось сделать:

    private async void nextBtn_Tapped(object sender, RoutedEventArgs e)
    {
        Task<string> help = searchtext();

        box.Text = await help; //this is seems weird

        DoForwardSearch();
    }

    private async Task<string> searchtext()
    {
        box.Text = "Searching...";
        await Task.Delay(100); // I kinda want to avoid a delay
        return "Searching..."; //this is somewhat unnecessary
    }

Я почти уверен, что это не так, как это приятноспособ.

...