Polling-database is geen erg elegante oplossing.
SqlDependency
van ADO.NET zal in uw geval nuttig zijn. Het maakt geen gebruik van polling maar een meldingsmechanisme. De meldingen worden geleverd door Service Broker in uw database, dus u moet deze service inschakelen in uw database. De OnChange
gebeurtenis wordt verhoogd wanneer gespecificeerde tabel verandert (update, verwijderen, invoegen ...)
Hier is een voorbeeld van het gebruik van SqlDependency:
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the refence in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}
van http://msdn.microsoft.com/en-us/library/ 62xk7953.aspx
Hier leest u hoe u Service Broker inschakelt (houd er rekening mee dat u exclusiviteit op de database hebt om dat te doen - het beste kunt u dit doen na het opnieuw opstarten van de sql-server):http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx
(Verbroken link)
Mogelijke alternatieve link:http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx