Как запустить метод после выполнения другого метода - PullRequest
0 голосов
/ 01 июня 2018

У меня есть два таймера: System.Timers.Timer и System.Windows.Forms.Timer.Теперь каждые 1,5 с оба вызывают метод.Но они не синхронизированы, потому что иногда метод, который вызывается с System.Timers.Timer, требует немного больше времени, пока это не будет сделано.Есть ли способ заставить метод, который вызывается с System.Windows.Forms.Timer, подождать, пока метод из System.Timers.Timer не будет выполнен?

Что я пробовал до сих пор:

 private void FileReadFunction(object sender, EventArgs e)
    {
        try
        {
            foreach (NetPinger.source.AddGraph b in graphList)
            {
                b.fileRead();
            }
        }

        catch(Exception ex)
        {
            MessageBox.Show(Convert.ToString(ex));
        }
        myTimer.Stop();
        aTimer.Start();
    }

    public void prepData(object objectInfo, EventArgs e)
    {
        foreach (NetPinger.source.AddGraph b in graphList)
        {
            b.prepareData();
        }
        aTimer.Stop();
        myTimer.Start();
    }

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Используйте только System.Timers.Timer и подготавливайте данные каждые 1,5 секунды, а затем немедленно обновляйте пользовательский интерфейс, используя метод Invoke, в том же обработчике событий.

0 голосов
/ 01 июня 2018

Вот, пожалуйста,

Timer timer1;
Timer timer2;

private void Timer1_Elapsed()
{
//just to make sure your timer1 & timer2 doesn't fire before you do your work
timer1.Stop();
timer2.Stop();
// Do What you want here
timer2.Start();
}

private void Timer2_Elapsed()
{
timer2.Stop();
//Do what you want here
timer1.Start();
}

Просто убедитесь, что ваш таймер1 изначально запущен.

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