我们正在运行一个使用 C#、SQL SERVER 的第三方应用程序。我们创建了另一个打印通行证的应用程序。
基本上,它会在远程数据库的一个表中持续检查来自第三方应用程序的新条目。如果存在新条目,则打印 pass。以这种方式访问网络数据库不是好方法,有时应用程序也会挂起。
我正在寻找其他方式而不是连续循环,例如:随着新条目的出现,它会触发我的打印应用程序。或任何其他实现的好方法。
我们正在运行一个使用 C#、SQL SERVER 的第三方应用程序。我们创建了另一个打印通行证的应用程序。
基本上,它会在远程数据库的一个表中持续检查来自第三方应用程序的新条目。如果存在新条目,则打印 pass。以这种方式访问网络数据库不是好方法,有时应用程序也会挂起。
我正在寻找其他方式而不是连续循环,例如:随着新条目的出现,它会触发我的打印应用程序。或任何其他实现的好方法。
您正在寻找的是可以帮助您收听事件的SqlDependency 。OnChange
来自 msdn 的示例:
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);
}
看看:http: //msdn.microsoft.com/en-us/library/62xk7953.aspx
如果任何用户随后更改了基础数据,Microsoft SQL Server 会检测到此类更改存在未决通知,并发布一个通知,该通知通过调用 SqlDependency.Start 创建的基础 SqlConnection 进行处理并转发到客户端。客户端侦听器接收到无效消息。然后,客户端侦听器找到关联的 SqlDependency 对象并触发 OnChange 事件。
让我总结一下数据:
您需要在这里向我们提供更多信息以获得更智能的帮助,但基本上您可以: