Evenement et instance courante
Bonjour,
Je travaille avec une instance d'un objet.
Dans cette instance, j'ai un object qui émet des évènements.
Les événement sont traités dans un gestionnaire d'événement qui est static : du coup il ne peut pas interragir avec mon instance.
Comment faire ?
Voici le squelette :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
public class TestRunProc
{
StringBuilder sb;
public string ResponseText
{
get
{
return sb.ToString();
}
}
public TestRunProc()
{
sb = new StringBuilder();
}
public void WriteMessage(string message)
{
sb.AppendFormat("\t{0}\n", message);
}
public void Run()
{
using (SqlConnection cnx = new SqlConnection("..."))
{
cnx.Open();
cnx.InfoMessage += Cnx_InfoMessage; // Là ici
cnx.FireInfoMessageEventOnUserErrors = true;
using (SqlCommand cmd = cnx.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "...";
sb.AppendLine("Lancement de la procédure...");
cmd.ExecuteNonQuery();
sb.AppendLine("La procédure a terminé sans encombre...");
}
cnx.Close();
}
}
private static void Cnx_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
TestRunProc process = sender as TestRunProc; // Le souci c'est que c'est pas mon TestRunProc que je récupère, mais le SqlConnection...
foreach (SqlError error in e.Errors)
{
if (error.Class != 0)
{
process.WriteMessage("Une erreur non bloquante s'est produite.");
}
process.WriteMessage(error.Message);
}
}
} |