Archive

Archive for août 2007

WCF, WPF, Duplex Channel & Threading !

Si votre application WPF doit appeler un service WCF via un duplex channel (tcpBinding par exemple), il est possible que les callbacks générés par le service reste bloqué.
Le callback ne sera traité par le client WPF qu’une fois le timeout de l’appel initial survenu.
 
Ce comportement (normal par défaut) est lié au modèle de threading (mono thread) utilisé. Le thread appelant est bloqué car il vient d’émettre un appel … et le service appelé vient d’émettre un callback vers le client … qui ne peut pas répondre car son thread est bloqué par l’appel qu’il a émis 🙂 (vous me suivez encore là ?   )
Seule la libératon du thread appelant (par le timeout dans le cas par défaut) permet de traiter le message de callback reçu.
 
Pour ne pas se retrouver dans cette situation de verrou mortel, il convient de faire extremement attention aux threads appelant.
Une solution simple (mais à utiliser avec précaution  ) est d’utiliser l’attribut CallBackBehavior en positionnant UseSynchronisationContext à false sur l’objet implémentant l’interface de CallBack.

[

CallbackBehavior(UseSynchronizationContext = false)]
class ObjetImplémentantLesCallbacks : MesContracts.IManagementCallback
{
     // votre code
}

Impossibilié d’installer Visual Studio 2008 Beta 2

Malgré la desinstallation apparement totale de la beta1 (sous Vista FR), lors de l’installation de Visual Studio 2008 Beta 2  une erreur m’indiquait que "MSDN Library for Visual Studio Orcas – ENU" en version Beta 1 était toujours installé.
Toutefois, l’application n’apparaissait plus dans la liste des applications installées …
kesako que ce problemo ?
En utilisant un bout de script utilisant WMI pour lister les applications installées, ce fameux "MSDN Library for Visual Studio Orcas – ENU" était bien présent !!!!
Résultat, pour tout mettre d’aplomb, une petite ligne de commande permet de forcer la desinstallation de l’élément fautif :
MsiExec.exe /X{3A89F960-5977-3419-8462-AA0BD5DEEACB}
D’autre part, n’oubliez par de desintaller les hotfix "FOR TESTING PURPOSE" qui ont put être installé par Windows Update :
KB110806, KB930264, KB929300
 
Catégories :Vista