Actualizá la tabla (ubicada en el dataset con los datos de la db), que esta enlazada al control que muestra los datos, cada x segundos con la clase timer o despues de cada actualización para que vean siempre el dato actual.
Timer:
Implementa un temporizador que provoca un evento a intervalos definidos por el usuario. Este temporizador optimizado para el uso en aplicaciones de Windows Forms y se debería utilizar en una ventana.
http://msdn.microsoft.com/es-es/library/system.windows.forms.timer%28v=vs.110%29.aspx
Código C++:
Ver originalprivate Timer timer1;
public void InitTimer()
{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = 2000; // in miliseconds
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
this.providersTableAdapter.Fill(paolaStockDataSet.Providers);
}
ADO.NET utiliza manejo de concurrencia optimista porque "trabaja" con datos desconectados. Es un dataset con distintas tablas dentro, se actualiza la tabla, y luego se sincroniza con la bd fisica. Mientras se actualiza la bd se lockea el registro que está siendo modificado. Cuando se quiere actualizar el registro se comparan las versiones. Si las mismas son diferentes, da error de concurrencia. Podés agregarle tu logica de negocios para mejorar el control de versiones. En el siguiente enlace se explica como hacerlo con codigo SQL.
Diferentes formas de manejar la concurrencia:
http://msdn.microsoft.com/en-us/library/cs6hb8k4%28v=VS.80%29.aspx