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 csharp : Sélectionner tout - Visualiser dans une fenêtre à part
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); } } }
Partager