Bonjour,

j'ai une petite question je pose le context :

j'ai un formulaire classique windows dans le quel j'instantie un BackgroundWorker afin d'éffectuer des traitement assez lourds (nombreux accès sur BDD + écriture de fichiers XML volumineux)

dans le DoWork du BackgroundWorker j'instantie des couches métiers permettant l'accès aux données ces couches métiers implémentes des événements (parfaitement récupérable dans le DoWork)
mais la je sèche comment puis-je propager ces événements sur mon formulaire windows ?

en effet le DoWork s'éxécutant de façon asynchrone (je pense donc dans un thread ddiffèrent) je n'est pas accès aux objets de mon formulaire dans la méthode associé à l'événement remonté

pour clarifier un peu voici un extrait de mon code :
Code : 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
 
        private void ExportXmlMessage_Load(object sender, EventArgs e)
        {
            bck.DoWork += new DoWorkEventHandler(bck_DoWork);
            bck.WorkerReportsProgress = true;
            bck.ProgressChanged += new ProgressChangedEventHandler(bck_ProgressChanged);
            bck.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bck_RunWorkerCompleted);
            bck.RunWorkerAsync(new argBCK(_id_message,_typemessage,_version));
        }
 void bck_DoWork(object sender, DoWorkEventArgs e)
        {
 
            EDICOTBusiness.EDICOTSecurity es = new EDICOTBusiness.EDICOTSecurity();
            SqlConnection connMessage = es.EDICOTConnTampon(_typemessage + _version);
            EDICOTBusiness.cheminsEchanges chm = new EDICOTBusiness.cheminsEchanges(_typemessage, 0, GlobalParameter.LogisEDICOTConnexion,GlobalParameter.numeroposte);
            EDICOTBusiness.EExport_XML Exml = new EDICOTBusiness.EExport_XML(chm.repTemplate, chm.repOut, connMessage, GlobalParameter.LogisEDICOTConnexion, _typemessage, _version);
            Exml.Notification+=new EDICOTBusiness.EExport_XML.NotificationHandler(Exml_Notification);
            try
            {
                Exml.InitialiseData(_id_message, 1);
                string filename = Exml.ExportMessage(_id_message);
 
            }
            catch (Exception exp)
            {
                ETraces.trace Trace = new ETraces.trace(GlobalParameter.LogisEDICOTConnexion);
                Trace.WriteTrace(70018, _id_message.ToString(), exp.Message);
 
            }
            finally
            {
                connMessage.Close();
            }
        }
 
void Exml_Notification(object d, EDICOTBusiness.EvtInfos e)
        {
            try
            {
                msg.Text += e.message;
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
si quelqu'un à déjà rencontrer le problème ou que vous pouviez m'aider je vous en serais très reconnaissant

cordialement,

Franck