Как я могу установить DispatcherTimer в цикл for - PullRequest
2 голосов
/ 28 декабря 2010

Я использую wpf DispatcherTimer, и я не хочу использовать его в цикле for, как я могу его использовать ..

мой код здесь ..

        DispatcherTimer timer = new DispatcherTimer();

        timer.Tick += (s, e) =>
        {
            for (i = 0; i < 10; i++)
            {
                obsValue.Add(new Entities(i));
                timer.Interval = TimeSpan.FromSeconds(30);
                timer.Start();
            }
        };

Спасибо ....

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Когда вы запускаете таймер с Interval, установленным на 30 seconds, его событие Tick будет вызываться каждые 30 секунд.

Теперь, как я понимаю из вашего вопроса, вы хотите добавитьзапись каждые 30 секунд.

Вот что вы можете сделать.Обратите внимание, что для этого не требуется for loop, но вам все равно нужно поддерживать текущий индекс.Для этого вы можете использовать private field или local variable with lambda.

Пример:

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(30);

    Int32 index = 0, maxValue = 10;

    timer.Tick += (s, e) =>
    {                
        obsValue.Add(new Entities(index));
        index ++; // increment index

        // Stop if this event has been raised max number of times
        if(index > maxValue) timer.Stop();
    };

    timer.Start();
1 голос
/ 28 декабря 2010

Я думаю, вы неправильно понимаете, как работает DispatcherTimer.Как только вы вызываете Start (), событие Tick будет срабатывать при каждом достижении интервала, т.е. вы запускаете его, и оно повторяется.Вместо этого ваш код должен выглядеть так:

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(30);
    timer.Start();

    timer.Tick += (s, e) =>
    {
        for (i = 0; i < 10; i++)
        {
            obsValue.Add(new Entities(i));
        }
    };

Это добавит 10 новых сущностей каждые 30 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...