Cómo automatizar la tarea de consumir el servicio web

tengo unaplicación winform que necesita consumir unservicio web. El servicio web verifica en la base de datos cualquier cambio. Si hay algún cambio en la base de datos, la aplicación winform debe ser notificada y realizará algunas tareas en consecuencia. ¿Cómo puedo hacer eso?

Pensé en usar el temporizador en mi aplicación winform y, después de decir cada 5 minutos, conectarme a un servicio web y verificar si se han realizado nuevos cambios en la base de datos. ¿Hay alguna otra forma de esto?

Actualizar:

Estoy publicando el código aquí basado en las respuestas:

clase 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();
     }

Ahora todo funciona bien, excepto 1 tarea, es decir, popMessage (fragmento de código en la parte superior).Aquí se abre el formulario pero parece estar cargando siempre. Antes de usar los tiempos, solía funcionar bien. ¿Cómo puedo manejarlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta