public void SpBeginExecuteReader(string spName, Action <AsyncDbCallback <DataReader> > callback, string[] parameters, params object[] values) { if (callback == null) { throw new ArgumentNullException(string.Format("Exec {0} Error! Callback action can not be null!!", spName)); } SqlConnection cnn = GetConnection(); SqlCommand cmd = new SqlCommand(spName, cnn); cmd.CommandTimeout = CommandTimeout; cmd.CommandType = CommandType.StoredProcedure; try { SpFillParameters(cmd, parameters, values); AsyncDbCallback <DataReader> context = new AsyncDbCallback <DataReader>(); context.SqlCommand = cmd; context.SqlConnection = cnn; context.CallbackType = CallbackType.DataReader; context.DbType = IICDbType.SqlServer2005; cmd.BeginExecuteReader( new AsyncCallback(delegate(IAsyncResult ar) { AsyncDbCallback <DataReader> c = ar.AsyncState as AsyncDbCallback <DataReader>; c.ar = ar; callback(context); }), context, CommandBehavior.CloseConnection); } catch (System.Exception ex) { cnn.Close(); throw ex; } }
//public IAsyncResult SpBeginExecuteNonQuery(string spName, AsyncCallback callback, object stateObject, string[] parameters, params object[] values) { // throw new NotImplementedException(); //} //public int SpEndExecuteNonQuery(IDbCommand cmd, IAsyncResult ar) { // throw new NotImplementedException(); //} public void SpBeginExecuteNonQuery(string spName, Action <AsyncDbCallback <int> > callback, string[] parameters, params object[] values) { if (callback == null) { throw new ArgumentNullException(string.Format("Exec {0} Error! Callback action can not be null!!", spName)); } MySqlConnection cnn = GetConnection(); MySqlCommand cmd = new MySqlCommand(spName, cnn); cmd.CommandTimeout = CommandTimeout; cmd.CommandType = CommandType.StoredProcedure; try { SpFillParameters(cmd, parameters, values); AsyncDbCallback <int> context = new AsyncDbCallback <int>(); context.CallbackType = CallbackType.NonQuery; context.DbType = IICDbType.Mysql; context.SqlConnection = cnn; context.SqlCommand = cmd; cmd.BeginExecuteNonQuery(new AsyncCallback(delegate(IAsyncResult ar) { context.ar = ar; callback(context); }), context); } catch (System.Exception ex) { cnn.Close(); throw ex; } }