Probleme transtypage

Signaler
Messages postés
210
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
210
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
27 novembre 2009
-
Bonjour,
J'ai un probleme que je n'arrive pas a resoudre sur un stranstypage. En fait je recupere un Objet via un System.IAsyncResult grace a l'attribut AsyncState. Cet objet est cense contenir une valuer correspondante a une classe que j'ai cree et qui ne contient que des String et des int, donc serialisable. Or quand j'essaye de transtyper l'objet AsyncState en ma classe il me dit qu'il ne peut pas transtyper, lors de l'execution car sa compile.:
Impossible d'effectuer un cast d'un objet de type 'System.Object' en type 'ServerInfo'.

Alors que je fais juste un:

ServerInfo info = ((ServerInfo)state.AsyncState);

Merci de votre aide parceque la je seche!!

5 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Alors attention, la sérialisation et le transtypage, ça n'a rien à voir ensemble hein, pas d'amalgames.
Quel objet passes-tu en paramètre lors de l'appel de la fonction asynchrone ? Est-il bien du type ServerInfo ?
Sinon essaie de mettre un point d'arrêt à cet endroit, et regarde le type de state.AsyncState.
<hr size="2" width="100%" />Julien.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
le plus propre est de faire :

ServerInfo info = state.AsyncState as ServerInfo;
if (info != null) {
   // ...
}

mais en debug, tu peux voir le type de AsyncState

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
210
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
27 novembre 2009

Bon j'ai essaye avec le as ServerInfo et ca marche mieux, enfin le stranstypage est accepte mais apres mon info est null. Du coup ca veut dire que mon appelle asynchone ne marche pas bien.
Voila ce que je fais:

BegingetServerInfo(null, new object());

public System.IAsyncResult BegingetServerInfo(System.AsyncCallback callback, object asyncState)
    {
        return this.BeginInvoke("getServerInfo", new object[0], callback, asyncState);
    }

Du coup je pense que c'est le AsynCallBack a null le probleme mais je ne sais pas trop quoi mettr d'autre!!

Merci
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Attends qu'essaie-tu de faire avec ton ServerInfo ?

En effet le problème est que AsyncCallBack est null. Tu voudrais que ton objet tombe du ciel ?

Tu comprends bien l'utilité de state.AsyncState ? Tiens lis ceci :

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=774237&SiteID=1

<hr size="2" width="100%" />Julien.
Messages postés
210
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
27 novembre 2009

Bah en fait j'ai reflechi un peu plus et je me susi rendu compte de mon erreur. Du coup j'ai cree une fonction de type
void function(IAsyncResult result) et dedans je fais un result.AsyncState as ServerInfo et mon serverInfo est toujours null.
Du coup je ne sais pas si je l'utilise bien!!