Bonjour,

Dans le cadre d'un developpement interne de la societe, je suis amené a realiser une application dialoguant avec notre erp a partir d'un scanner de type teklogix.
J'ai donc cree une application Windows Mobile 5.0 Pocket avec Visual Studio 2005 contenant des appels a des webservices dialoguant avec l'erp.

Certains de ces webservices presentent des temps d'attente assez long. J'ai donc fait des appels en mode asynchrone.

Malheureusement, lorsque ma fonction WSCallback essaye de modifier un label de mon winform ou lorsque celle ci essaye d'appeller une autre panel winform j'obtiens le message d'erreur suivant:
"An error message cannot be displayed because an optional resource assembly containing it cannot be found".

J'ai pourtant essayé de m'inspiré de codes existant.

Quelqu'un aurait-il une solution? merci


Voici mon code:
Code C# : 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
   public Boolean PSLogin(string sLogin, string sPassword)
        {
            Boolean bok = true;
 
            l_WSTeklogix = new TeklogixScanners.WSTeklogix.Service();            
 
            /*cb permet d'assigner une fonction de callback, en l'occurrence "AdditionneCallback"*/
            AsyncCallback cb = new AsyncCallback(WSCallback);
            /*Démarrage de l'appel asynchrone*/
            IAsyncResult Response = l_WSTeklogix.BeginPSLogin(sLogin, sPassword, cb, l_WSTeklogix);
            Response.AsyncWaitHandle.WaitOne();
 
            return (bok);
        }
 
        /*Cette méthode est la méthode de callback*/
        public void WSCallback(IAsyncResult Response)
        {
            //Exemple petitExemple = (Exemple)Reponse.AsyncState;
            //int RetourStr = petitExemple.EndAdditionne(Reponse);
            //reponse_webservice.Text = RetourStr.ToString();
            l_WSTeklogix = (TeklogixScanners.WSTeklogix.Service)Response.AsyncState;
            if (l_WSTeklogix.EndPSLogin(Response, out sPSMessage))
            {
                //TeklogixScanners.Packing.Pack_Work_Location Pnl_Work_Location = new TeklogixScanners.Packing.Pack_Work_Location(txt_Login.Text, txt_Password.Text);
                //Pnl_Work_Location.Visible = true;
                //Pnl_Work_Location.Show(); -> ne fonctionne pas!
                //MessageBox.Show("Fin du traitement"); ->fonctionne!!!
                lbl_Thread.Text = "fin du traitement";     ->ne fonctionne pas!           
            }
        }