通过委托计算数据庫访问时间,次数 每当客户打开,关闭連接时,为StateChange事件指定处理程序, 通过事件处理程序在列表框显示相关信息。 namespace @event ... { public partial class Form1 : Form ...{ public Form1() ...{ InitializeComponent(); } private void cmdCnStateChange_Click(object sender, EventArgs e) ...{ SqlConnection cn= new SqlConnection(@"Data Source=localhost;Integrated Security=SSPI;database=Northwind"); SqlCommand cmd=new SqlCommand(); cmd.CommandText="SELECT CustomerId,CompanyName FROM Customers"; cmd.Connection=cn; cn.StateChange+=new StateChangeEventHandler(CnStateChange); try ...{ cn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) ...{ lbResult.Items.Add(dr.GetString(0) + "-" + dr.GetString(1)); } } catch (SqlException se) ...{ foreach (SqlError err in se.Errors) ...{ lbResult.Items.Add(err); } } finally ...{ cn.Close(); } } private void CnStateChange(object sender, StateChangeEventArgs ev) ...{ lbResult.Items.Add("--------"); lbResult.Items.Add("Entering StateChange EventHander"); lbResult.Items.Add("Sender=" + sender.ToString()); lbResult.Items.Add("Original State=" + System.DateTime.Now);//获取当前时间 lbResult.Items.Add("Current State=" + ev.CurrentState.ToString());//获取当前状态 lbResult.Items.Add("Exiting StateChange Event Hander"); lbResult.Items.Add("--------"); } }}