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?