locked
Прерывание тасков RRS feed

  • Вопрос

  • Подскажите как реализовать прерывание потока?

    public async void ClickDawn()
            {
                    
                    double Condition = 87.5;
                    double fin;
                    for (double Cicl = Frenq; Cicl >= Condition; Cicl -= 0.1)
                    {
                        fin = Math.Round(Cicl, 1);
    
                        if (fin == 87.5)
                        {
                            fin = 108.0;
                        }
    
                        FMRadio.Instance.Frequency = fin;
                        await Task.Delay(150);
                        //DelaySearch();
                        if (FMRadio.Instance.SignalStrength > 0.9)//проверка на силу сигнала
                        {                               
                            Frenq = Math.Round(fin - 0.1, 1);//удаляем лишние цифры после десятых
                            Visible_Frenq.Text = Convert.ToString(fin);//переводим в текстовый формат
                            Cicl = fin;
                            Contakt.Text = "вниз";
                            return;
                        }
                        Visible_Frenq.Text = Convert.ToString(fin);
                    }
                
            }
            public async void ClickUp()
            {
                double Condition = 108.0;
                double fin;
                for (double Cicl = Frenq; Cicl <= Condition; Cicl += 0.1)
                {
                    fin = Math.Round(Cicl, 1);
    
                    if (fin == 108.0)
                    {
                        fin = 87.5;
                    }
    
                    FMRadio.Instance.Frequency = fin;
                    await Task.Delay(150);
                    //DelaySearch(200);
                    if (FMRadio.Instance.SignalStrength > 0.9)
                    {
                        Frenq = Math.Round(fin + 0.1, 1);
                        Visible_Frenq.Text = Convert.ToString(fin);
                        Cicl = fin;
                        //Frenq = Math.Round(fin + 0.1, 1);
                        Contakt.Text = "Вверх";
                        return;
                    }
                    Visible_Frenq.Text = Convert.ToString(fin);
                    //await Task.Delay(400);
                }
            }

    Как сделать чтобы при активации метода ClickUp метод ClickDawn прерывался и на оборот?


    9 октября 2014 г. 18:10

Ответы

  • Вы можете использовать cancellationtoken для своих целей. Т.е. вам будет необходимо обернуть оба метода в  Task, и когда вы его будете запускать передать также и токен и, соответственно, когда начнете запускать другой метод отмените предыдущий с помощью токена.

    И второй метод: создать пару булевых переменных, с помощью которых контролировать возможность выполнения кода.
    10 октября 2014 г. 18:09
  • Вы можете просмотреть следующие ссылки: ссылка1, ссылка2, ссылка3, ссылка4.
    10 октября 2014 г. 19:36

Все ответы

  • Вы можете использовать cancellationtoken для своих целей. Т.е. вам будет необходимо обернуть оба метода в  Task, и когда вы его будете запускать передать также и токен и, соответственно, когда начнете запускать другой метод отмените предыдущий с помощью токена.

    И второй метод: создать пару булевых переменных, с помощью которых контролировать возможность выполнения кода.
    10 октября 2014 г. 18:09
  • Вы можете использовать cancellationtoken для своих целей. Т.е. вам будет необходимо обернуть оба метода в  Task, и когда вы его будете запускать передать также и токен и, соответственно, когда начнете запускать другой метод отмените предыдущий с помощью токена.

    И второй метод: создать пару булевых переменных, с помощью которых контролировать возможность выполнения кода.
    А можно на примере показать!? Как обернуть метод в Task?
    10 октября 2014 г. 18:35
  • Вы можете просмотреть следующие ссылки: ссылка1, ссылка2, ссылка3, ссылка4.
    10 октября 2014 г. 19:36