Генерация случайных чисел до нажатия кнопки (UWP) - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть текстовый блок и кнопка.

Я хочу, чтобы текстовый блок заполнялся случайным числом, когда я нажимал кнопку, и оно должно менять случайное число каждые 5 секунд.Когда я нажимаю кнопку второй раз, она должна остановиться на последнем случайном числе.

Как мне это сделать?Вот что я попробовал:

    bool thisStatus = false;

    private void btn_click(object sender, RoutedEventArgs e)
    {
        if (thisStatus == false)
        {
            thisStatus = true;
        }
        else thisStatus = false;
        random();
    }

        private void random()
    {
        while (thisStatus)
        {
            Random random = new Random();
            int RandomNumber = random.Next(0, 100);
            txtBlck.Text = RandomNumber.ToString();
            Task.Delay(5000);
        }
    }

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018
bool thisStatus = false;

private async void btn_click(object sender, RoutedEventArgs e)
{
    thisStatus = !thisStatus // mke the toggling simple.
    await random();
}

private async Task random()
{
    while (thisStatus)
    {
        Random random = new Random();
        int RandomNumber = random.Next(0, 100);
        txtBlck.Text = RandomNumber.ToString();
        await Task.Delay(5000);
    }
}

вам нужно дождаться метода задержки задачи, потому что ожидание гарантирует, что он завершится, прежде чем двигаться дальше.

0 голосов
/ 26 сентября 2018

Вы можете использовать Диспетчер Таймер

dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,5);

int RandomNumber;
Random random = new Random();

private void btn_click(object sender, RoutedEventArgs e)
{
    if (thisStatus == false)
    {
       thisStatus = true;
       dispatcherTimer.Start();
    }
        else {
          thisStatus = false;
          dispatcherTimer.Stop();
         }
}

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    RandomNumber = random.Next(0, 100);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...