Como automatizar a tarefa de consumir serviço da web

eu tenho umaplicação winform que precisa consumir umserviço de internet. O serviço da Web verifica no banco de dados quaisquer alterações. Se houver alguma alteração no banco de dados, o aplicativo winform deverá ser notificado e executará algumas tarefas de acordo. Como faço isso?

Pensei em usar o timer no meu aplicativo winform e, depois de dizer a cada 5 minutos, conecte-se a um serviço da web e verifique se novas alterações foram feitas no banco de dados. Existe alguma outra maneira para isso?

Atualizar:

Estou postando o código aqui com base nas respostas:

classe PerformTasks {

    public static bool checkIfInProgress { get; set; }

    public static void InitializeWebService()
    {
        try
        {
            Timer = new System.Timers.Timer(2000);
            Timer.Elapsed += OnTimedEvent;
            Timer.Enabled = true;
        }
     }

     private static void callService()
     {
        using (var service = new WebServiceSoapClient())
        {
            checkIfInProgress = true;
            task1();
            task2();
            popMessage();
            checkIfInProgress = false;
        }
     }

     private static void OnTimedEvent(Object source, ElapsedEventArgs e)
     {
        if (checkIfInProgress == false)
        {
            callService();
        }
     }

     private static void PpopMessage()
     {
         var form = new Form
            {
                StartPosition = FormStartPosition.Manual,
                ShowInTaskbar = false,
                Text = "Message",
                Size = new Size(500, 200),
             };
            var screen = Screen.FromPoint(form.Location);
            Label lblText = new Label();
            lblText.Text ="Test Text";
            lblText.Dock = DockStyle.Fill;
            lblText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            form.MaximizeBox = false;

            form.Controls.Add(lblText);
            form.Location = new Point(screen.WorkingArea.Right - form.Width, screen.WorkingArea.Bottom - form.Height);
            form.Show();
     }

Agora tudo funciona bem, exceto uma tarefa, ou seja, popMessage (snippet de código na parte superior).Aqui o formulário é aberto, mas parece estar sempre carregando. Antes de usar os tempos, costumava funcionar bem. Como posso lidar com isso?

questionAnswers(2)

yourAnswerToTheQuestion