SlideShare une entreprise Scribd logo
1  sur  188
Préparation de la certification MCSD 70-483: Programmer en C#
Création & définition des types
Béchir BEJAOUI
Formateur et consultant indépendant
Notes sur les méthodes
Partie II
Préparation de la certification MCSD 70-483: Programmer en C#
Notes sur les méthodes
Présentation
1
2
4
Les génériques
3
❖ Une méthode est un groupe d'instructions sensé d’être réutilisé à chaque fois
on l’appelle
❖ Les éléments d'une méthode
Modificateur d’accès: Ceci détermine la visibilité de la méthode par apport à une
autre classe.
Type de retour: Une méthode peut renvoyer une valeur, on la nomme fonction dans
ce cas, si elle retourne void on la nomme procédure
Nom de la méthode: Le nom de la méthode est un identifiant unique et il est
sensible à la casse
Liste des paramètres: Entre parenthèses, les paramètres sont utilisés pour
transmettre et recevoir respectivement des données d'une et vers la méthode
Corps de la méthode: Il contient l'ensemble des instructions nécessaires pour
effectuer l'activité requise
Les paramètres
Méthodes extensions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
4
Les génériques
3
Passage des paramètres « Valeur, référence et out »:
Les paramètres
Passage par valeur Passage par référence
Passage par out
Notes sur les méthodes
Méthodes extensions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
4
Des génériques
3
Passage de nombre indéterminé de paramètres :
Les paramètres
Avec params Sans params
Notes sur les méthodes
Méthodes extensions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
3
4
Passage de paramètres optionnels:
Les paramètres
Correct Incorrect
Notes sur les méthodes
Méthodes extensions
Les génériques
Préparation de la certification MCSD 70-483: Programmer en C#
Passage de paramètres nommés:
Correct Incorrect
Notes sur les méthodes
Présentation
1
2
3
Méthodes extensions
4
Les paramètres
Les génériques
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
3
Méthodes extensions
4
Les méthodes extensions:
Les paramètres
Les génériques
Permet de compter le
nombre de mots dans
une chaine
Permet d’extraire un
sous groupe de mots
à partir d’une phrase
qui sont conformes à
des patterns conformes
À des expressions
régulières
Notes sur les méthodes
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
3
Méthodes extensions
4
Les méthodes génériques:
Les paramètres
Les génériques
Exemple de méthode extension
Type de retour Types génériques Arguments Contraintes
Notes sur les méthodes
Préparation de la certification MCSD 70-483: Programmer en C#
Les méthodes génériques:
Incorrect
Notes sur les méthodes
Présentation
1
2
3
Méthodes extensions
4
Les paramètres
Les génériques
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Notes sur les méthodes
Préparation de la certification MCSD 70-483: Programmer en C#
Béchir BEJAOUI
Formateur et consultant indépendant
Les déléguées et les expressions
Lambda
Création & définition des types
Préparation de la certification MCSD 70-483: Programmer en C#
Les déléguées et les expressions Lambda
Présentation
1
2
3
Les expressions λ
4
Etudes de cas
❖ Les délégués C # sont similaires aux pointeurs vers les fonctions, en
C ou C ++
❖ Un délégué est une variable de type référence qui contient la
référence à une méthode
❖ La référence peut être modifiée lors de l'exécution
❖ Les délégués sont particulièrement utilisés dans la mise en œuvre
des événements et des méthodes de rappel « Callback »
❖ Tous les délégués sont dérivés implicitement de la classe
System.Delegate
Les déléguées
Préparation de la certification MCSD 70-483: Programmer en C#
Les déléguées et les expressions Lambda
❖ Le terme «expression lambda» est dérivé du calcul «lambda» qui
est à son tour une notation mathématique appliquée pour définir les
fonctions
❖ Les expressions lambda sont principalement utilisées dans le
contexte du LINQ
❖ A ne pas confondre avec Action et Func qui sont des déléguées
prédéfinis fournit par le .Net Framework
//Définition d'une déléguée //Expression lambda
delegate (int x,int y){ return x + y; }; vs (x, y) => x + y;
Présentation
1
2
3
Comparaison
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Les déléguées et les expressions Lambda
Présentation
1
2
3
Comparaison
Les types
d’arguments
Le type
de retour
Les arguments Le corps
Une comparaison d’anatomies
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Les déléguées et les expressions Lambda
Présentation
1
2
3
Comparaison
Etudes de cas
❖ Utilisation des délégués pour définir des événements sans
paramètres
❖ Utilisation des délégués pour définir des événements avec
paramètres
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les déléguées et les expressions lambda
Préparation de la certification MCSD 70-483: Programmer en C#
Création & définition des types
Béchir BEJAOUI
Formateur et consultant indépendant
La programmation dynamique et la
réflexion
Partie I
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les objets de réflexion sont utilisés pour obtenir des informations de
type lors de l'exécution
❖ Les classes qui donnent accès aux métadonnées d'un programme
se trouvent dans l'espace de noms System.Reflection
❖ La réflexion permet
 D'afficher les informations d'attribut lors de l'exécution
 D'examiner différents types dans un assemblage et d'instancier ces
types
 Une liaison tardive aux méthodes et aux propriétés
 Créer de nouveaux types en temps d'exécution, puis effectue certaines
tâches en utilisant ces types
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Le type dynamic permet aux opérations d’être résolues au moment
de l'exécution
❖ Le type dynamic se comporte comme le type object dans la plupart
des cas
❖ Cependant, les opérations qui contiennent des expressions de type
dynamique ne sont pas résolues par le compilateur
❖ Le compilateur regroupe des informations sur l'opération et ces
informations seront ensuite utilisées pour évaluer l'opération au
moment de l'exécution
❖ Les variables de type dynamic sont compilées dans des variables de
type object.
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Par conséquent, le type dynamique existe uniquement au moment
de la compilation, pas au moment de l'exécution
Etudes de cas
❖ Il est possible d’utiliser un type ExpandoObject
pour définir un objet dynamique
❖ Pour plus de personnalisation de l’objet dynamique il est possible
d’hériter de classe DynamicObject
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
❖ La définition et l’ utilisation des attributs
Présentation
1
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Quelques opérations sur la réflexion
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
❖ Quelques opérations sur les types dynamiques
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ La programmation dynamique et la réflexion
Préparation de la certification MCSD 70-483: Programmer en C#
Création & définition des types
Béchir BEJAOUI
Formateur et consultant indépendant
La programmation dynamique et la
réflexion
Partie II
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les objets de réflexion sont utilisés pour obtenir des informations de
type lors de l'exécution
❖ Les classes qui donnent accès aux métadonnées d'un programme
se trouvent dans l'espace de noms System.Reflection
❖ La réflexion a les applications suivantes
 Il permet d'afficher les informations d'attribut lors de l'exécution
 Il permet d'examiner différents types dans un assemblage et
d'instancier ces types
 Il permet une liaison tardive aux méthodes et aux propriétés
 Il permet de créer de nouveaux types lors de l'exécution, puis effectue
certaines tâches en utilisant ces types
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Le type dynamic permet aux opérations d’être résolues au moment
de l'exécution
❖ Le type dynamic se comporte comme le type object dans la plupart
des cas
❖ Cependant, les opérations qui contiennent des expressions de type
dynamique ne sont pas résolues par le compilateur
❖ Le compilateur regroupe des informations sur l'opération et ces
informations seront ensuite utilisées pour évaluer l'opération au
moment de l'exécution
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les variables de type dynamic sont compilées dans des variables de
type object.
❖ Par conséquent, le type dynamique existe uniquement au moment
de la compilation, pas au moment de l'exécutionEtudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
❖ La définition et l’ utilisation des attributs
Présentation
1
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
Etudes de cas
MethodBase MethodInfo MethodBody
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Quelques opérations sur la réflexion
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
❖ Quelques opérations sur les types dynamiques
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ La programmation dynamique et la réflexion
Préparation de la certification MCSD 70-483: Programmer en C#
Création & définition des types
Béchir BEJAOUI
Formateur et consultant indépendant
La programmation dynamique et la
réflexion
Partie III
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les objets de réflexion sont utilisés pour obtenir des informations de
type lors de l'exécution
❖ Les classes qui donnent accès aux métadonnées d'un programme
se trouvent dans l'espace de noms System.Reflection
❖ La réflexion a les applications suivantes
 Il permet d'afficher les informations d'attribut lors de l'exécution
 Il permet d'examiner différents types dans un assemblage et
d'instancier ces types
 Il permet une liaison tardive aux méthodes et aux propriétés
 Il permet de créer de nouveaux types lors de l'exécution, puis effectue
certaines tâches en utilisant ces types
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Le type dynamic permet aux opérations d’être résolues au moment
de l'exécution
❖ Le type dynamic se comporte comme le type object dans la plupart
des cas
❖ Cependant, les opérations qui contiennent des expressions de type
dynamique ne sont pas résolues par le compilateur
❖ Le compilateur regroupe des informations sur l'opération et ces
informations seront ensuite utilisées pour évaluer l'opération au
moment de l'exécution
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les variables de type dynamic sont compilées dans des variables de
type object.
❖ Par conséquent, le type dynamique existe uniquement au moment
de la compilation, pas au moment de l'exécutionEtudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
❖ La définition et l’ utilisation des attributs
Présentation
1
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Quelques opérations sur la réflexion
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
Etudes de cas
MethodBase MethodInfo MethodBody
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
❖ Quelques opérations sur les types dynamiques
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ La programmation dynamique et la réflexion
Préparation de la certification MCSD 70-483: Programmer en C#
Création & définition des types
Béchir BEJAOUI
Formateur et consultant indépendant
La programmation dynamique et la
réflexion
Partie IV
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les objets de réflexion sont utilisés pour obtenir des informations de
type lors de l'exécution
❖ Les classes qui donnent accès aux métadonnées d'un programme
se trouvent dans l'espace de noms System.Reflection
❖ La réflexion a les applications suivantes
 Il permet d'afficher les informations d'attribut lors de l'exécution
 Il permet d'examiner différents types dans un assemblage et
d'instancier ces types
 Il permet une liaison tardive aux méthodes et aux propriétés
 Il permet de créer de nouveaux types lors de l'exécution, puis effectue
certaines tâches en utilisant ces types
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Le type dynamic permet aux opérations d’être résolues au moment
de l'exécution
❖ Le type dynamic se comporte comme le type object dans la plupart
des cas
❖ Cependant, les opérations qui contiennent des expressions de type
dynamique ne sont pas résolues par le compilateur
❖ Le compilateur regroupe des informations sur l'opération et ces
informations seront ensuite utilisées pour évaluer l'opération au
moment de l'exécution
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Les variables de type dynamic sont compilées dans des variables de
type object.
❖ Par conséquent, le type dynamique existe uniquement au moment
de la compilation, pas au moment de l'exécutionEtudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
❖ La définition et l’ utilisation des attributs
Présentation
1
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
❖ Quelques opérations sur la réflexion
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
2
Etudes de cas
MethodBase MethodInfo MethodBody
Préparation de la certification MCSD 70-483: Programmer en C#
La programmation dynamique et la réflexion
Présentation
1
❖ Quelques opérations sur les types dynamiques
2
Etudes de cas
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ La programmation dynamique et la réflexion
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Un point d’ordre
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Un point d’ordre
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Introduction des exceptions
Présentation
1
2
❖ Une exception est une anomalie qui se présente lors de l'exécution
d'un programme
❖ Les exceptions fournissent un moyen de transférer le contrôle
d'une partie d'un programme à l'autre
❖ La gestion des exceptions en C # est basée sur quatre mots
clés:
 try: Un bloc try identifie un bloc de code au niveau du quel des exceptions
particulières sont levées. Il est suivi d'un ou plusieurs blocs de capture
 Catch: Le mot-clé catch indique la capture d'une exception dans un
bloque alternatif
 Finally: Il est utilisé pour exécuter un ensemble d'instructions, qu'une
exception soit levée ou non
 throw: Une instruction qui lève une exception lorsqu'un problème apparaît
Erreurs
3
Catégories
Préparation de la certification MCSD 70-483: Programmer en C#
❖ L’ erreur est un flux d’exécution non correct connu dans l'application
❖ Habituellement, dans ce cas, l'application peut intercepter ces
exceptions et / ou écrire un gestionnaire générique pour gérer toutes
les exceptions dans le système
❖ L’ exception, est généralement lancée lorsque quelques choses
inattendues se produit dans l'application
Par exemple: l'ouverture d'un fichier non existant
Par exemple: La comparaison avec un objet nulle
❖ Une erreur dans la logique du programme pouvant entraîner une
exception. Cependant, l'erreur doit être traitée non pas par la
gestion des exceptions mais en modifiant le code défectueux
Présentation
1
2
Erreurs
3
Catégories
4
Anatomie
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Erreurs
3
Catégories
Exemple de code
4
Anatomie
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Exception
Application Exception System Exception
Les catégories des exceptions
Présentation
1
2
Erreurs
3
Catégories
4
Anatomie
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Erreurs
3
Catégories
4
Anatomie
Propriétés Description Acesseurs
Message Fournit des détails sur la cause de l'exception get;
StackTrace Fournit des informations sur l'endroit où l'erreur s'est
produite
get;
InnerException Fournit des informations sur la série d'exceptions qui ont pu
se produire
get;
HelpLink Fournit l'URL d'aide pour une exception particulière get;set;
Data Fournit des données arbitraires dans des paires clé-valeur get;
TargetSite Fournit le nom de la méthode où cette exception a été levée get;
Source Fournit des informations sur l’application source d’exception get;set
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Erreurs
3
Catégories
4
Anatomie
Méthodes Description
GetBaseException Retourne le type de base de l’exception levée
GetObjetData Ajoute de l’extra logique lors de la sérialisation / déserialisation
d’une exception
Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Introduction des exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les types blocs des exceptions
Partie I
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
Exemples de blocs
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Signale l’occurrence d’une exception pendant l’exécution du programme
❖ Peut également être utilisé dans un bloc catch pour lever de
nouveau une exception gérée dans un bloc catch
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Il faut faire attention entre usage les deux codes suivants
Les types de blocs d’exceptions
5
When
Code 1 Code 2
Préparation de la certification MCSD 70-483: Programmer en C#
❖ On perd les informations concernant l’origine de levée d’exception
lorsqu’on utilise throw ex au lieu de throw
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas d’utilisation de throw
Préparation de la certification MCSD 70-483: Programmer en C#
❖ On perd les informations concernant l’origine de levée d’exception
lorsqu’on utilise throw ex au lieu de throw
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas d’utilisation de throw ex
Préparation de la certification MCSD 70-483: Programmer en C#
❖ Le code du bloc finally est lancé que ce soit une exception est levée ou
pas
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas connexion à SQL Server
Préparation de la certification MCSD 70-483: Programmer en C#
❖ Le bloc finally est utilisé pour libérer des ressourcesTypes de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Il n’est pas possible d’utiliser return continue ou break au niveau d’un
bloc finally
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Les types de blocs d’exceptions
❖ Lorsqu’il s’agit de plusieurs exceptions à capturer il faut commencer
de la plus spéciale vers la plus générale
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Correct Incorrect
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Les types de blocs d’exceptions
❖ Il est possible de filtrer les exceptions selon des critères bien
déterminés basés sur les valeurs des propriétés
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les types de blocs d’exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les types blocs des exceptions
Partie II
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
Exemples de blocs
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Signale l’occurrence d’une exception pendant l’exécution du programme
❖ Peut également être utilisé dans un bloc catch pour lever de
nouveau une exception gérée dans un bloc catch
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Il faut faire attention entre usage les deux codes suivants
Les types de blocs d’exceptions
5
When
Code 1 Code 2
Préparation de la certification MCSD 70-483: Programmer en C#
❖ On perd les informations concernant l’origine de levée d’exception
lorsqu’on utilise throw ex au lieu de throw
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas d’utilisation de throw
Préparation de la certification MCSD 70-483: Programmer en C#
❖ On perd les informations concernant l’origine de levée d’exception
lorsqu’on utilise throw ex au lieu de throw
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas d’utilisation de throw ex
Préparation de la certification MCSD 70-483: Programmer en C#
❖ Le code du bloc finally est lancé que ce soit une exception est levée ou
pas
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Les types de blocs d’exceptions
5
When
Cas connexion à SQL Server
Préparation de la certification MCSD 70-483: Programmer en C#
❖ Le bloc finally est utilisé pour libérer des ressourcesTypes de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
❖ Il n’est pas possible d’utiliser return continue ou break au niveau d’un
bloc finally
Les types de blocs d’exceptions
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Les types de blocs d’exceptions
❖ Lorsqu’il s’agit de plusieurs exceptions à capturer il faut commencer
de la plus spéciale vers la plus générale
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
Correct Incorrect
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Les types de blocs d’exceptions
❖ Il est possible de filtrer les exceptions selon des critères bien
déterminés basés sur les valeurs des propriétés
Types de bloques
1
2
throw
3
finally
4
Hiérarchie en blocs
5
When
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les types de blocs d’exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les exceptions les plus utilisées
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
❖ Listes des domaines
 Système
 Entrée / sortie
 Web
 Les données
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Système
ArithmeticException DividedByZeroException OutOfMemoryException
NotImplementedException
OverflowException StackOverflowException
NullReferenceException AgregateException ArgumentException
ArgumentNullException ArgumentOutOfRangeException
IndexOutOfRangeException
InsufficientMemoryException TimeoutException
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Les données
DbException OleDbException SqlException
SqlTypeException
DBConcurrencyException
SqlNullValueException
DataException ConstraintException
InvalidUdtException
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Les entrées sorties
DriveNotFoundException EndOfStreamException FileLoadException
IOExceptionFileNotFoundException IsolatedStorageException
Le Web
HttpException HttpUnhandledException HttpParseException
MembershipCreateUserException
HttpRequestValidationException IsolatedStorageException
MembershipPasswordException
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les exceptions les plus utilisées
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les exceptions les plus utilisées
Partie II
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
❖ Listes des domaines
 Système
 Entrée / sortie
 Web
 Les données
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Système
ArithmeticException DividedByZeroException OutOfMemoryException
NotImplementedException
OverflowException StackOverflowException
NullReferenceException AgregateException ArgumentException
ArgumentNullException ArgumentOutOfRangeException
IndexOutOfRangeException
InsufficientMemoryException TimeoutException
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Les données
DbException OleDbException SqlException
SqlTypeException
DBConcurrencyException
SqlNullValueException
DataException ConstraintException
InvalidUdtException
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Catégories
Les exceptions les plus utilisées
Les entrées sorties
DriveNotFoundException EndOfStreamException FileLoadException
IOExceptionFileNotFoundException IsolatedStorageException
Le Web
HttpException HttpUnhandledException HttpParseException
MembershipCreateUserException
HttpRequestValidationException IsolatedStorageException
MembershipPasswordException
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les exceptions les plus utilisées
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les exceptions personnalisées
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Exemple
Les exceptions personnalisées
❖ Lors de la conception de classes d'exceptions personnalisées, vous
devez dériver votre classe de System.Exception et non de
ApplicationException
❖ ApplicationException était à l'origine destiné à être utilisé pour
créer des exceptions définies par l'utilisateur, mais son utilisation
n'est plus recommandée Microsoft
❖ Vous devez dériver des exceptions personnalisées de la classe
Exception plutôt que de la classe ApplicationException
Préparation de la certification MCSD 70-483: Programmer en C#
Présentation
1
2
Exemple
Les exceptions personnalisées
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les exceptions personnalisées
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Ré cap sur les exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Remarques
1
Ré cap sur les exceptions
❖ Exception est une classe de base pour tout type de classe
d'exception en C #
❖ Types d'exceptions: SystemException et ApplicationException.
❖ La classe SystemException est utilisée pour les erreurs
d'exécution liées au CLR.
❖ La classe Exception inclut des propriétés importantes, par
exemple Message, StackTrace, InnerException, Data
❖ Le bloc try doit être suivi d'un catch ou d'un block finally ou des
deux.
❖ Un bloc catch multiple est autorisé avec différents filtres
d'exception. Le bloc catch général {..} doit venir en dernier.
Préparation de la certification MCSD 70-483: Programmer en C#
Ré cap sur les exceptions
❖ catch {..} et catch (Exception ex) {} ne peuvent pas être utilisés
ensemble
❖ Le bloc finally doit venir après le bloc try ou catch.
❖ Le bloc finally s'exécutera toujours, qu'une exception soit survenue
ou non.
❖ Le bloc finally est l'endroit approprié pour disposer des objets.
❖ Le bloc finally ne peut pas avoir de retour ou de pause car il ne
permet pas de quitter le contrôle.
❖ Les blocs try-catch imbriqués sont autorisés en C #
❖ Une exception sera interceptée dans le bloc catch interne si le filtre
approprié est trouvé, autrement sera attrapé par le bloc catch
externe
Remarques
1
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Ré cap sur les exceptions
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Une vue sur l'écosystème
Multithreading en .Net
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
❖ Les axes
 Les Threads
 La classe BackgroundWorker
 Les Tasks
 Les continuations
 Les annulations ou Cancellations
 Les verrouillages et les synchronisations
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clé
1
Une vue sur l’écosystème Multithreading en .Net
❖ Les Threads
 Les threads sont des processus légers, un thread est défini
comme le chemin d'exécution d'un programme
 Chaque thread définit un flux de contrôle unique
 L'utilisation des threads économise le gaspillage du cycle du
processeur et augmente l'efficacité d'une application
 Le thread est représenté par la classe Thread
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
❖ Le BackgroundWorker
 Relier la méthode à exécution de longue durée à l'événement
DoWork
 Commencer l'opération en appelant RunWorkerAsync
 Pour obtenir des informations sur le déroulement de l'opération,
il faut s’abonner à l’événement ProgressChanged
 Pour savoir quand l'opération longue est terminée, abonnez-
vous à l'événement RunWorkerCompleted
 Pour interagir avec l’ exécution il est possible à travers les
membres de DoWorkEventArgs à savoir, Argument et Result
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
❖ Les Tasks
 A partir de C# 4.0 une nouvelle bibliothèque s’ajoute
System.Threading.Tasks
 A la différence du Thread, l’objet Task peut retourner un objet
 Le mécanisme d’attente pour un ensemble de tâches se fait
sans besoin de l’extra code de signalisation
 L'exception de tâche enfant peut se propager à la tâche parente,
avec possibilité d’annulation de tâches avec les Cancelation Token
 La possibilité d’enchaîner les tâches pour les exécuter les
unes après les autres, avec même un établissement de
relation hiérarchique parents/ enfants
 L'implémentation asynchrone est facile dans la tâche, en
utilisant les mots-clés async et await
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
❖ Les annulations
 La classe CancellationTokenSource pour contrôler les
opérations annulables, et la structure CancellationToken
❖ Les continuations
 Continuer une tâche en appelant les méthodes ContinueWith,
WhenAll ou WhenAny
 Il faut comprendre la différence entre WhenAll ou WhenAny
d’une part et WaitAny WaitAll d’autre part
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
❖ Les verrouillages & synchronisations
 Les mécanismes et objets de verrouillage et gestion d’accès
aux sources partagées dans un contexte Multithread
 Mots clé Interlocked et lock qui permet de gérer les accès
concurrents aux ressources et aux zones critiques
 Les méthodes synchronisées décorées par
[MethodImpl(MethodImplOptions.Synchronized)]
 La classe ReaderWriterLock
 Les classes Monitor, Mutex et Semaphore
Préparation de la certification MCSD 70-483: Programmer en C#
Les points clés
1
Une vue sur l’écosystème Multithreading en .Net
APM EAP TPL
deadlock Synchronisation TaskFactory
Threadpool atomicité Async/await
❖ Quelques concepts clé
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Une vue sur l’écosystème Multithreading en .Net
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les Threads
Préparation de la certification MCSD 70-483: Programmer en C#
Les états
1
Les threads
Démarqué
En attente
Lancé Avorté
Sleep/Interrupt
Join
Start Abort
Schéma qui représente les états de Thread
Membres
2
Start
3
Join
4
Interrupt & Abort
5
ResetAbort
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Propriétés Description
Name Obtient ou définit le nom du thread.
Priority Obtient ou définit une valeur indiquant la priorité de
planification d'un thread.
ThreadState Obtient une valeur contenant les états du thread actuel.
IsAlive Obtient une valeur indiquant l'état de l'exécution du thread
actuel.
IsBackground Obtient ou définit une valeur indiquant si le thread est un thread
d'arrière-plan ou non.
CurrentThread Obtient le thread en cours d'exécution.
CurrentPrincipal Obtient ou définit le principal actuel du thread.
CurrentCulture Obtient ou définit la culture du thread actuel.
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Propriétés Description
IsThreadPoolThread Indique si un thread appartient au pool de threads managés ou
non.
ManagedThreadId Obtient un identificateur unique pour le thread managé
actuel.
ExecutionContext Obtient un objet ExecutionContext qui contient des
informations relatives aux divers contextes du thread actuel.
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Méthodes Description
Start() Lance le thread.
Sleep() Suspend le thread actuel pendant la durée spécifiée.
Join() Bloque le thread appelant jusqu’à ce que le thread représenté
par cette instance s’arrête
Interrupt() Interrompt un thread dont l'état est WaitSleepJoin
Abort() Déclenche ThreadAbortException dans le thread sur lequel l'appel
a lieu
ResetAbort() Annule un Abort demandé pour le thread actuel.
VolatileRead() Lit la valeur d'un champ volatile
VolatileWrite() Écrit immédiatement une valeur dans un champ volatile
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Méthodes Description
BeginCriticalRegion() Avertit un hôte que l'exécution est sur le point d'entrer
dans une zone de code dans laquelle les effets d'un
abandon de thread ou d'une exception non gérée
peuvent compromettre d'autres tâches
EndCriticalRegion() Avertit un hôte que l'exécution est sur le point d'entrer
dans une zone de code dans laquelle les effets d'un
abandon de thread ou d'une exception non gérée sont
limités à la tâche actuelle
MemoryBarrier() MemoryBarrier est requis uniquement sur les systèmes
multiprocesseurs avec une faible mémoire tri, équivalente
à l’emploi de lock
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Lancement de Thread sans passage de paramètres
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Lancement de Thread avec passage de paramètres
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Utilisation du délégué
Utilisation de l’expression lambda
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Cas d’utilisation de join
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Les threads
Cas d’utilisation d’interrupt
Cas d’utilisation de abort
Bloqué
Arrêté
Les états
1
Membres
2
Start
3
Join
4
Interrupt & Abort
5
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les threads
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
La classe BackgroundWorker
Préparation de la certification MCSD 70-483: Programmer en C#
Membres
1
La classe BackgroundWorker
Exploitation
2
Propriétés Description
WorkerReportsProgress Obtient ou définit une valeur indiquant si
le BackgroundWorker peut signaler des mises à
jour de progression.
WorkerSupportsCancellation Obtient ou définit une valeur indiquant si
le BackgroundWorker prend en charge
l’annulation asynchrone.
IsBusy Obtient une valeur indiquant si
le BackgroundWorker une opération asynchrone
est en cours d’exécution.
CancellationPending Obtient une valeur indiquant si l’application a
demandé l’annulation d’une opération d’arrière-
plan.
Préparation de la certification MCSD 70-483: Programmer en C#
La classe BackgroundWorker
Méthodes Description
RunWorkerAsync() Démarre l’exécution d’une opération d’arrière-plan.
CancelAsync() Demande l’annulation d’une opération d’arrière-plan
en attente.
ReportProgress() Déclenche l'événement ProgressChanged.
Membres
1
Exploitation
2
Evènements Description
DoWork Se produit lorsque RunWorkerAsync est appelé.
ProgressChanged Se produit lorsque ReportProgress est appelé.
RunWorkerCompleted Se produit lorsque l’opération d’arrière-plan est
terminée, a été annulée ou a levé une exception.
Préparation de la certification MCSD 70-483: Programmer en C#
La classe BackgroundWorker
Membres
1
2
Exploitation
5
Les gestionnaires d’événements
1
Appel du BackgroundWorker
Préparation de la certification MCSD 70-483: Programmer en C#
La classe BackgroundWorker
Membres
1
2
Exploitation
2
3
Les gestionnaires d’événements
4
Préparation de la certification MCSD 70-483: Programmer en C#
La classe BackgroundWorker
Membres
1
2
Exploitation
Gestionnaires d’événementsinitialisation
Appel
Appel:
RunWorkerAsync()
CancelAsync()
Vérification :
IsBusy
Appel:
ReportProgress ()
Vérification :
CancellationPending
Vérification:
Args.ProgressPercentage
Vérification:
Args.Cancelled
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ La classe BackgroundWorker
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les Tasks
Préparation de la certification MCSD 70-483: Programmer en C#
Membres
1
Les Tasks
Création
2
Propriétés Description
Status Obtient le TaskStatus de cette tâche.
IsFaulted Indique si Task s'est terminé suite à une exception non
gérée.
IsCompleted Indique si cet Task s'est terminé.
IsCanceled Indique si cette instance de Task s'est exécutée avec
succès suite à une annulation.
Id Obtient un ID pour cette instance de Task.
Factory Fournit l'accès aux méthodes de fabrique pour la
création d'instances de Task et de Task<TResult>
Exception Obtient le AggregateException qui a provoqué l'arrêt
prématuré de Task.
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Propriétés Description
AsyncState Obtient l'objet d'état fournit quand Task a été créé, ou
null si aucun n'a été fournit.
CompletedTask Obtient une tâche qui s’est déjà terminée correctement.
CreationOptions Obtient les TaskCreationOptions utilisées pour créer cette
tâche.
CurrentId Retourne l'ID du Task en cours d'exécution.
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Méthodes Description
ConfigureAwait Configure un élément awaiter utilisé pour attendre cette
tâche
ContinueWith Crée des tâches de continuation.
Delay Crée une tâche après la durée spécifiée.
Run Crée une tâche et la place en file d'attente pour
commencer à s’executer.
RunSynchronously Exécute une tâche de manière synchrone.
Start Commence une tâche.
Wait Attend la fin de la tâche.
WaitAll Attend que toutes les tâches soient terminées.
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Méthodes Description
WaitAny Attend que l'une des tâches d'un ensemble se termine.
WhenAny Crée une tâche qui se termine lorsque toutes les tâches
spécifiées sont terminées
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Techniques de lancement des Tasks
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Techniques de lancement des Tasks
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Techniques de lancement des Tasks
Membres
1
Création
2
Async/await
3
AgregationException
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Membres
1
Création
2
Async/await
3
AgregationException
4
Techniques d’utilisation async await
Préparation de la certification MCSD 70-483: Programmer en C#
Les Tasks
Membres
1
Création
2
Async/await
3
AgregationException
4
Exemple d’aggregatexception
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les Tasks
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les annulations
Préparation de la certification MCSD 70-483: Programmer en C#
Les annulations
❖ Les annulations pour le cas des Tasks, il faut réviser les éléments suivants pour
l’examen MCSD
 La classe CancellationTokenSource et la structure CancellationToken
 L’exception AgregationException
❖ Les annulations pour le cas des ThreadsRubriques
1
Cas de Thread
2
Cas de Task
Cas de BackGWorker
4
3
❖ Les annulations pour le cas de la classe Backgroundworker
Préparation de la certification MCSD 70-483: Programmer en C#
Les annulations
❖ Pour le cas des Threads, il faut implémenter le mécanisme suivantRubriques
1
Cas de Thread
2
Cas de Task
Cas de BackGWorker
4
3
Exemple de mécanisme d’annulation de Thread
Préparation de la certification MCSD 70-483: Programmer en C#
Les annulations
❖ Pour le cas du BackgroundWorker, il suffit de passer la valeur true à e.Cancel de
DoWorkEventArgs du DoWork_Handler pour une condition donnée
Rubriques
1
Cas de Thread
2
Cas de Task
Cas de BackGWorker
4
3
Exemple de mécanisme d’annulation de tâche
Préparation de la certification MCSD 70-483: Programmer en C#
Les annulations
❖ Pour le cas des Tasks , il suffit d’utiliser la classe CancellationTokenSource
et la structure CancellationToken
Rubriques
1
Cas de Thread
2
Cas de Task
Cas de BackGWorker
4
3
Exemple de mécanisme d’annulation de tâche
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les annulations
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les continuations
Préparation de la certification MCSD 70-483: Programmer en C#
Les continuations
Rappel
1
❖ C’est l’enchainement d’exécutions des opérations d’une manière
séquentielle
❖ Avant que la bibliothèque TPL ne soit disponible, les continuations
sont effectuées en utilisant des méthodes de rappel « CallBack ».
❖ Une continuation n'est qu'une autre tâche qui ne bloque pas le
thread sur lequel elle est appelée.
❖ Les avantages des continuations sont:
 Une Invocation d’une ou plusieurs tâches en utilisant le même antécédent
 Une spécification de certaines conditions sur la base des quelles les suites doivent être
exécutées
 Une Transmission des données d'une tâche antécédente à une tâche de continuation
ContinueWith
2
WhenAny
WhenAll
4
3
Préparation de la certification MCSD 70-483: Programmer en C#
Les continuations
Rappel
1
ContinueWith
2
WhenAny
WhenAll
4
3
Simple exemple qui utilise ContinueWith
Préparation de la certification MCSD 70-483: Programmer en C#
Les continuations
Simple exemple qui utilise WhenAll avec Fibonaci
❖ Pour exécuter une continuation quand toutes les tâches antécédentes
sont terminées, on effectue l’appel de la méthode WhenAll
Rappel
1
ContinueWith
2
WhenAny
WhenAll
4
3
Préparation de la certification MCSD 70-483: Programmer en C#
Les continuations
Simple exemple qui utilise WhenAny avec Fibonaci
❖ Pour exécuter une continuation quand n'importe quelle tâche
d'antécédent est terminée, vous appelez la méthode
statique Task.WhenAny
Rappel
1
ContinueWith
2
WhenAny
WhenAll
4
3
Préparation de la certification MCSD 70-483: Programmer en C#
Les continuations
Rappel
1
Cas de Thread
2
Cas de Task
Cas de BackGWorker
4
3
❖ A ne pas confondre WhenAny et WhenAll avec WaitAny et WaitAll
❖ Deux premières sont utilisées pour la continuation et les deux
dernières sont utilisées pour la synchronisation
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les continuations
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les synchronisations
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
❖ Le verrouillage avec l’objet lock
❖ L’atomicité des opérations avec interlocked
❖ La différence entre lock, Mutex, Monitor et Semaphore
❖ La synchronisation avec l’attribut MethodImpl
❖ WaitAll et WaitAny pour le cas des Tasks
❖ Le Deadlock
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
❖ lock (this) n’est pas conseillé si l’instance est accessible
publiquement.
❖ lock (‘chaine’) tout code utilisant la même chaîne partagera le
même verrou.
❖ lock (typeof(monType)) tout code utilisant le même objet
partagera le même verrou.
❖ La bonne pratique consiste à définir un objet privé statique, pour
protéger les données communes à toutes les instances.
❖ Pour le cas des Tasks il n’est pas possible d’utiliser le mot clé await.
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
Un simple code créant un verrouillage
sur une zone sensée critique
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
Un simple code créant un verrouillage
sur opération atomique
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
méthode Description
Add() Représente la somme, sous la forme d'une opération atomique
CompareExchange() Compare deux nombres
Decrement() Décrémente une variable spécifiée et stocke le résultat, sous la
forme d'une opération atomique
Increment() Incrémente une variable spécifiée et stocke le résultat sous la
forme d'une opération atomique.
Exchange() Affecte une valeur spécifiée à un handle ou un pointeur
Read(Int64) Retourne une valeur 64 bits chargée sous la forme d'une
opération atomique
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
lock
2
MethodImpl
Interlocked
4
3
Synchronisation de méthodes
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les synchronisations
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les synchronisations
Partie II
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
❖ Le verrouillage avec l’objet lock
❖ L’atomicité des opérations avec interlocked
❖ La différence entre Monitor, Mutex, Semaphore, ReaderWrtierLockSlim
❖ La synchronisation avec l’attribut MethodImpl
❖ WaitAll et WaitAny pour le cas des Tasks
❖ Le Deadlock
❖ La classe TaskSchedulerLes Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Exemple de méthode potentiellement génératrice d’un
DeadLock
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Exemple de DeadLock
Les Tasks
4
Ressource: R1 Ressource: R2
Thread: T1
Thread: T2
Assignée à T2 par
(objet verrou A )
Assignée à T1 par
(objet verrou B )
En attente de
En attente de
=
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Exemple de DeadLock dans la vie courante
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Appel du code précédent qui produit
une situation de DeadLock
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Etude comparative des classes de verrouillage selon
Joseph Albahari
Classe Description Inter
Process
Charge d’exécution
(ns)
Monitor (lock) Garantit qu'un seul thread peut
accéder à une ressource ou à une
section de code à la fois
non 20
Mutex
oui 1000
SemaphoreSlim Garantit que pas plus d'un nombre
spécifié de threads concurrents
peuvent accéder à une ressource ou à
une section de code
non 200
Semaphore
oui 1000
ReaderWriterLockSlim Permet plusieurs lectures de coexister
avec un seule écriture
non 100Les Tasks
4
Comparaison de classes de verrouillage:
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Equivalence entre lock et Monitor
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
La classe Monitor:
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
La classe Monitor:
méthode Description
IsEntered(Object) Détermine si le thread actuel détient le verrou sur l'objet
spécifié.
Pulse(Object) Avertit un thread situé dans la file d'attente d'un changement
d'état de l'objet verrouillé.
PulseAll(Object) Avertit tous les threads en attente d'un changement d'état de
l'objet.
TryEnter() Essaie d'acquérir un verrou exclusif sur l'objet spécifié.
Wait(Object) Libère le verrou d'un objet et bloque le thread actuel jusqu'à ce
qu'il acquière à nouveau le verrou.
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
❖ Mutex est comme monitor, ce pendant elle peut fonctionner sur
plusieurs processus à l'échelle de l'application.
Exemple basique de verrouillage d’accès avec
Mutex
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
La classe Mutex:
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
La classe Mutex:
méthode Description
GetAccessControl() Obtient un objet MutexSecurity qui représente la sécurité de
contrôle d'accès.
OpenExisting() Ouvre le mutex nommé spécifié, s'il existe déjà.
WaitOne() Bloque le thread actuel jusqu'à ce que le WaitHandle actuel
reçoive un signal.
TryOpenExisting() Ouvre le mutex nommé spécifié, s'il existe déjà, et retourne
une valeur indiquant si l'opération a réussi.
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
❖ Une classe sémaphore c’ est comme les toilettes publiques qui a
une certaine capacité. Une fois elles sont pleines, plus personne ne
peut entrer
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
Monitor & Mutex Semaphore
La classe Semaphore:
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Exemple basique de verrouillage d’accès avec
Semaphore
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
La classe Semaphore:
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
La classe Semaphore:
méthode Description
SetAccessControl() Définit la sécurité de contrôle d'accès pour un sémaphore
système nommé.
OpenExisting() Ouvre le semaphore nommé spécifié, s'il existe déjà.
WaitOne() Bloque le thread actuel jusqu'à ce que le WaitHandle actuel
reçoive un signal.
TryOpenExisting() Ouvre le semaphore nommé spécifié, s'il existe déjà, et
retourne une valeur indiquant si l'opération a réussi.
Rubriques
1
DeadLock
2
Classes de verrouillage
3
Les Tasks
4
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les synchronisations
Préparation de la certification MCSD 70-483: Programmer en C#
Gestion du flux de programme
Béchir BEJAOUI
Formateur et consultant indépendant
Les synchronisations-Partie III
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
❖ Le verrouillage avec l’objet lock
❖ L’atomicité des opérations avec interlocked
❖ La différence entre Monitor, Mutex, Semaphore, ReaderWrtierLockSlim
❖ La synchronisation avec l’attribut MethodImpl
❖ WaitAll et WaitAny pour le cas des Tasks
❖ Le Deadlock
❖ La classe TaskScheduler
Rubriques
1
WaitAny/WaitAll
2
3
TaskScheduler
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
WaitAny/WaitAll
2
3
TaskScheduler
❖ Les principales différences entre l’utilisation de WaitAny et
WaitAll
 WaitAny attend jusqu’à au moins la terminaison de l’une des
tâches, WaitAll attend jusqu’à la terminaison de toutes les
tâches
 WaitAny retourne un objet générique , WaitAll est void
 L’appel à la méthode WaitAll encapsule toutes les exceptions
dans une AggregateException de l’objet et les propage vers
le thread appelant.
Préparation de la certification MCSD 70-483: Programmer en C#
Les synchronisations
Rubriques
1
WaitAny/WaitAll
2
3
TaskScheduler
❖ Représente un objet qui gère les tâches de bas niveau de la mise en
file d'attente de tâches sur des threads.
❖ TaskScheduler est une classe abstraite, elle ne peut pas être
instanciée.
❖ TaskScheduler fournit une méthode de gestion de partition de travail
pour l'équilibrage de charge
La classe TaskScheduler:
Préparation de la certification MCSD 70-483: Programmer en C#
Ce qu’on a vu
▪ Les synchronisations
Préparation de la certification MCSD 70-483: Programmer en C#
Le Bilan
Béchir BEJAOUI
Formateur et consultant indépendant
Ce que nous avons vu ensemble
Préparation de la certification MCSD 70-483: Programmer en C#
Le bilan
❖ Chapitre I
 Un petit rappel
❖ Chapitre II
 Des Notions sur des types
 Les principes de programmation orientée objets
 Des notes à propos les définitions et l’usage des méthodes
 La différence entre les délégués et les expressions Lambda
 Les notions de programmation dynamique et de réflexion
Préparation de la certification MCSD 70-483: Programmer en C#
Le bilan
❖ Chapitre III
 Un point d’ordre
 Les notions relatives aux définitions et utilisations des exceptions
 Les Threads & la classe BackgroundWorker
 Les Tasks, les continuations et les annulations
 Les notions du le principe de synchronisation dans un contexte
de programmation multithreading
Préparation de la certification MCSD 70-483: Programmer en C#
Le bilan
A Bientôt

Contenu connexe

Similaire à Support formation vidéo : Programmer C#6, Préparation à la certification MCSD 70-483 (2)

Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharpSDFG5
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
2008-10-02 Paris - Intégrer tout type de Données
2008-10-02 Paris - Intégrer tout type de Données2008-10-02 Paris - Intégrer tout type de Données
2008-10-02 Paris - Intégrer tout type de DonnéesPatrick Guimonet
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie ErpC:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie Erpguesta6d652
 
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie ErpC:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie Erpguestb4e614
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! Marie-Alice Blete
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueXavier Callens
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4M10266 formation-programmation-csharp-avec-microsoft-net-framework-4
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4CERTyou Formation
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéCARA_Lyon
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 

Similaire à Support formation vidéo : Programmer C#6, Préparation à la certification MCSD 70-483 (2) (20)

Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScript
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
2008-10-02 Paris - Intégrer tout type de Données
2008-10-02 Paris - Intégrer tout type de Données2008-10-02 Paris - Intégrer tout type de Données
2008-10-02 Paris - Intégrer tout type de Données
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie ErpC:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
 
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie ErpC:\Fakepath\Ibs 2009 03 MéThodologie Erp
C:\Fakepath\Ibs 2009 03 MéThodologie Erp
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
C#
C#C#
C#
 
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4M10266 formation-programmation-csharp-avec-microsoft-net-framework-4
M10266 formation-programmation-csharp-avec-microsoft-net-framework-4
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilité
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 

Plus de SmartnSkilled

Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?SmartnSkilled
 
Support cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISupport cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISmartnSkilled
 
Support tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSupport tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSmartnSkilled
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Support formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exerciceSupport formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exerciceSmartnSkilled
 
Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?SmartnSkilled
 
Support formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie ISupport formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie ISmartnSkilled
 
Support cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnelsSupport cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnelsSmartnSkilled
 
Support cours : Les phares du marketing
Support cours : Les phares du marketingSupport cours : Les phares du marketing
Support cours : Les phares du marketingSmartnSkilled
 
Support formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeurSupport formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeurSmartnSkilled
 
Support cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSupport cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSmartnSkilled
 
Tutoriel : Online English Expertise
Tutoriel : Online English ExpertiseTutoriel : Online English Expertise
Tutoriel : Online English ExpertiseSmartnSkilled
 
Formation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commercialeFormation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commercialeSmartnSkilled
 
Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)SmartnSkilled
 
Support cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASASupport cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASASmartnSkilled
 
Support Tutoriel : Online English Expertise
Support Tutoriel : Online English ExpertiseSupport Tutoriel : Online English Expertise
Support Tutoriel : Online English ExpertiseSmartnSkilled
 
Support formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiquesSupport formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiquesSmartnSkilled
 
Support Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en publicSupport Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en publicSmartnSkilled
 
Support formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soiSupport formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soiSmartnSkilled
 
Support formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketingSupport formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketingSmartnSkilled
 

Plus de SmartnSkilled (20)

Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?
 
Support cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISupport cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie II
 
Support tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSupport tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERP
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec Docker
 
Support formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exerciceSupport formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exercice
 
Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?
 
Support formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie ISupport formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie I
 
Support cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnelsSupport cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnels
 
Support cours : Les phares du marketing
Support cours : Les phares du marketingSupport cours : Les phares du marketing
Support cours : Les phares du marketing
 
Support formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeurSupport formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeur
 
Support cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSupport cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERP
 
Tutoriel : Online English Expertise
Tutoriel : Online English ExpertiseTutoriel : Online English Expertise
Tutoriel : Online English Expertise
 
Formation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commercialeFormation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commerciale
 
Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)
 
Support cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASASupport cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASA
 
Support Tutoriel : Online English Expertise
Support Tutoriel : Online English ExpertiseSupport Tutoriel : Online English Expertise
Support Tutoriel : Online English Expertise
 
Support formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiquesSupport formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiques
 
Support Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en publicSupport Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en public
 
Support formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soiSupport formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soi
 
Support formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketingSupport formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketing
 

Dernier

Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 37
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 37
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 

Dernier (16)

Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 

Support formation vidéo : Programmer C#6, Préparation à la certification MCSD 70-483 (2)

  • 1. Préparation de la certification MCSD 70-483: Programmer en C# Création & définition des types Béchir BEJAOUI Formateur et consultant indépendant Notes sur les méthodes Partie II
  • 2. Préparation de la certification MCSD 70-483: Programmer en C# Notes sur les méthodes Présentation 1 2 4 Les génériques 3 ❖ Une méthode est un groupe d'instructions sensé d’être réutilisé à chaque fois on l’appelle ❖ Les éléments d'une méthode Modificateur d’accès: Ceci détermine la visibilité de la méthode par apport à une autre classe. Type de retour: Une méthode peut renvoyer une valeur, on la nomme fonction dans ce cas, si elle retourne void on la nomme procédure Nom de la méthode: Le nom de la méthode est un identifiant unique et il est sensible à la casse Liste des paramètres: Entre parenthèses, les paramètres sont utilisés pour transmettre et recevoir respectivement des données d'une et vers la méthode Corps de la méthode: Il contient l'ensemble des instructions nécessaires pour effectuer l'activité requise Les paramètres Méthodes extensions
  • 3. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 4 Les génériques 3 Passage des paramètres « Valeur, référence et out »: Les paramètres Passage par valeur Passage par référence Passage par out Notes sur les méthodes Méthodes extensions
  • 4. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 4 Des génériques 3 Passage de nombre indéterminé de paramètres : Les paramètres Avec params Sans params Notes sur les méthodes Méthodes extensions
  • 5. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 3 4 Passage de paramètres optionnels: Les paramètres Correct Incorrect Notes sur les méthodes Méthodes extensions Les génériques
  • 6. Préparation de la certification MCSD 70-483: Programmer en C# Passage de paramètres nommés: Correct Incorrect Notes sur les méthodes Présentation 1 2 3 Méthodes extensions 4 Les paramètres Les génériques
  • 7. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 3 Méthodes extensions 4 Les méthodes extensions: Les paramètres Les génériques Permet de compter le nombre de mots dans une chaine Permet d’extraire un sous groupe de mots à partir d’une phrase qui sont conformes à des patterns conformes À des expressions régulières Notes sur les méthodes
  • 8. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 3 Méthodes extensions 4 Les méthodes génériques: Les paramètres Les génériques Exemple de méthode extension Type de retour Types génériques Arguments Contraintes Notes sur les méthodes
  • 9. Préparation de la certification MCSD 70-483: Programmer en C# Les méthodes génériques: Incorrect Notes sur les méthodes Présentation 1 2 3 Méthodes extensions 4 Les paramètres Les génériques
  • 10. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Notes sur les méthodes
  • 11. Préparation de la certification MCSD 70-483: Programmer en C# Béchir BEJAOUI Formateur et consultant indépendant Les déléguées et les expressions Lambda Création & définition des types
  • 12. Préparation de la certification MCSD 70-483: Programmer en C# Les déléguées et les expressions Lambda Présentation 1 2 3 Les expressions λ 4 Etudes de cas ❖ Les délégués C # sont similaires aux pointeurs vers les fonctions, en C ou C ++ ❖ Un délégué est une variable de type référence qui contient la référence à une méthode ❖ La référence peut être modifiée lors de l'exécution ❖ Les délégués sont particulièrement utilisés dans la mise en œuvre des événements et des méthodes de rappel « Callback » ❖ Tous les délégués sont dérivés implicitement de la classe System.Delegate Les déléguées
  • 13. Préparation de la certification MCSD 70-483: Programmer en C# Les déléguées et les expressions Lambda ❖ Le terme «expression lambda» est dérivé du calcul «lambda» qui est à son tour une notation mathématique appliquée pour définir les fonctions ❖ Les expressions lambda sont principalement utilisées dans le contexte du LINQ ❖ A ne pas confondre avec Action et Func qui sont des déléguées prédéfinis fournit par le .Net Framework //Définition d'une déléguée //Expression lambda delegate (int x,int y){ return x + y; }; vs (x, y) => x + y; Présentation 1 2 3 Comparaison Etudes de cas
  • 14. Préparation de la certification MCSD 70-483: Programmer en C# Les déléguées et les expressions Lambda Présentation 1 2 3 Comparaison Les types d’arguments Le type de retour Les arguments Le corps Une comparaison d’anatomies Etudes de cas
  • 15. Préparation de la certification MCSD 70-483: Programmer en C# Les déléguées et les expressions Lambda Présentation 1 2 3 Comparaison Etudes de cas ❖ Utilisation des délégués pour définir des événements sans paramètres ❖ Utilisation des délégués pour définir des événements avec paramètres
  • 16. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les déléguées et les expressions lambda
  • 17. Préparation de la certification MCSD 70-483: Programmer en C# Création & définition des types Béchir BEJAOUI Formateur et consultant indépendant La programmation dynamique et la réflexion Partie I
  • 18. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les objets de réflexion sont utilisés pour obtenir des informations de type lors de l'exécution ❖ Les classes qui donnent accès aux métadonnées d'un programme se trouvent dans l'espace de noms System.Reflection ❖ La réflexion permet  D'afficher les informations d'attribut lors de l'exécution  D'examiner différents types dans un assemblage et d'instancier ces types  Une liaison tardive aux méthodes et aux propriétés  Créer de nouveaux types en temps d'exécution, puis effectue certaines tâches en utilisant ces types Etudes de cas
  • 19. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Le type dynamic permet aux opérations d’être résolues au moment de l'exécution ❖ Le type dynamic se comporte comme le type object dans la plupart des cas ❖ Cependant, les opérations qui contiennent des expressions de type dynamique ne sont pas résolues par le compilateur ❖ Le compilateur regroupe des informations sur l'opération et ces informations seront ensuite utilisées pour évaluer l'opération au moment de l'exécution ❖ Les variables de type dynamic sont compilées dans des variables de type object. Etudes de cas
  • 20. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Par conséquent, le type dynamique existe uniquement au moment de la compilation, pas au moment de l'exécution Etudes de cas ❖ Il est possible d’utiliser un type ExpandoObject pour définir un objet dynamique ❖ Pour plus de personnalisation de l’objet dynamique il est possible d’hériter de classe DynamicObject
  • 21. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion ❖ La définition et l’ utilisation des attributs Présentation 1 2 Etudes de cas
  • 22. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Quelques opérations sur la réflexion Etudes de cas
  • 23. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 ❖ Quelques opérations sur les types dynamiques 2 Etudes de cas
  • 24. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ La programmation dynamique et la réflexion
  • 25. Préparation de la certification MCSD 70-483: Programmer en C# Création & définition des types Béchir BEJAOUI Formateur et consultant indépendant La programmation dynamique et la réflexion Partie II
  • 26. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les objets de réflexion sont utilisés pour obtenir des informations de type lors de l'exécution ❖ Les classes qui donnent accès aux métadonnées d'un programme se trouvent dans l'espace de noms System.Reflection ❖ La réflexion a les applications suivantes  Il permet d'afficher les informations d'attribut lors de l'exécution  Il permet d'examiner différents types dans un assemblage et d'instancier ces types  Il permet une liaison tardive aux méthodes et aux propriétés  Il permet de créer de nouveaux types lors de l'exécution, puis effectue certaines tâches en utilisant ces types Etudes de cas
  • 27. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Le type dynamic permet aux opérations d’être résolues au moment de l'exécution ❖ Le type dynamic se comporte comme le type object dans la plupart des cas ❖ Cependant, les opérations qui contiennent des expressions de type dynamique ne sont pas résolues par le compilateur ❖ Le compilateur regroupe des informations sur l'opération et ces informations seront ensuite utilisées pour évaluer l'opération au moment de l'exécution Etudes de cas
  • 28. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les variables de type dynamic sont compilées dans des variables de type object. ❖ Par conséquent, le type dynamique existe uniquement au moment de la compilation, pas au moment de l'exécutionEtudes de cas
  • 29. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion ❖ La définition et l’ utilisation des attributs Présentation 1 2 Etudes de cas
  • 30. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 Etudes de cas MethodBase MethodInfo MethodBody
  • 31. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Quelques opérations sur la réflexion Etudes de cas
  • 32. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 ❖ Quelques opérations sur les types dynamiques 2 Etudes de cas
  • 33. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ La programmation dynamique et la réflexion
  • 34. Préparation de la certification MCSD 70-483: Programmer en C# Création & définition des types Béchir BEJAOUI Formateur et consultant indépendant La programmation dynamique et la réflexion Partie III
  • 35. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les objets de réflexion sont utilisés pour obtenir des informations de type lors de l'exécution ❖ Les classes qui donnent accès aux métadonnées d'un programme se trouvent dans l'espace de noms System.Reflection ❖ La réflexion a les applications suivantes  Il permet d'afficher les informations d'attribut lors de l'exécution  Il permet d'examiner différents types dans un assemblage et d'instancier ces types  Il permet une liaison tardive aux méthodes et aux propriétés  Il permet de créer de nouveaux types lors de l'exécution, puis effectue certaines tâches en utilisant ces types Etudes de cas
  • 36. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Le type dynamic permet aux opérations d’être résolues au moment de l'exécution ❖ Le type dynamic se comporte comme le type object dans la plupart des cas ❖ Cependant, les opérations qui contiennent des expressions de type dynamique ne sont pas résolues par le compilateur ❖ Le compilateur regroupe des informations sur l'opération et ces informations seront ensuite utilisées pour évaluer l'opération au moment de l'exécution Etudes de cas
  • 37. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les variables de type dynamic sont compilées dans des variables de type object. ❖ Par conséquent, le type dynamique existe uniquement au moment de la compilation, pas au moment de l'exécutionEtudes de cas
  • 38. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion ❖ La définition et l’ utilisation des attributs Présentation 1 2 Etudes de cas
  • 39. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Quelques opérations sur la réflexion Etudes de cas
  • 40. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 Etudes de cas MethodBase MethodInfo MethodBody
  • 41. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 ❖ Quelques opérations sur les types dynamiques 2 Etudes de cas
  • 42. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ La programmation dynamique et la réflexion
  • 43. Préparation de la certification MCSD 70-483: Programmer en C# Création & définition des types Béchir BEJAOUI Formateur et consultant indépendant La programmation dynamique et la réflexion Partie IV
  • 44. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les objets de réflexion sont utilisés pour obtenir des informations de type lors de l'exécution ❖ Les classes qui donnent accès aux métadonnées d'un programme se trouvent dans l'espace de noms System.Reflection ❖ La réflexion a les applications suivantes  Il permet d'afficher les informations d'attribut lors de l'exécution  Il permet d'examiner différents types dans un assemblage et d'instancier ces types  Il permet une liaison tardive aux méthodes et aux propriétés  Il permet de créer de nouveaux types lors de l'exécution, puis effectue certaines tâches en utilisant ces types Etudes de cas
  • 45. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Le type dynamic permet aux opérations d’être résolues au moment de l'exécution ❖ Le type dynamic se comporte comme le type object dans la plupart des cas ❖ Cependant, les opérations qui contiennent des expressions de type dynamique ne sont pas résolues par le compilateur ❖ Le compilateur regroupe des informations sur l'opération et ces informations seront ensuite utilisées pour évaluer l'opération au moment de l'exécution Etudes de cas
  • 46. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Les variables de type dynamic sont compilées dans des variables de type object. ❖ Par conséquent, le type dynamique existe uniquement au moment de la compilation, pas au moment de l'exécutionEtudes de cas
  • 47. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion ❖ La définition et l’ utilisation des attributs Présentation 1 2 Etudes de cas
  • 48. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 ❖ Quelques opérations sur la réflexion Etudes de cas
  • 49. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 2 Etudes de cas MethodBase MethodInfo MethodBody
  • 50. Préparation de la certification MCSD 70-483: Programmer en C# La programmation dynamique et la réflexion Présentation 1 ❖ Quelques opérations sur les types dynamiques 2 Etudes de cas
  • 51. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ La programmation dynamique et la réflexion
  • 52. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Un point d’ordre
  • 53. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Un point d’ordre
  • 54. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Introduction des exceptions
  • 55. Préparation de la certification MCSD 70-483: Programmer en C# Introduction des exceptions Présentation 1 2 ❖ Une exception est une anomalie qui se présente lors de l'exécution d'un programme ❖ Les exceptions fournissent un moyen de transférer le contrôle d'une partie d'un programme à l'autre ❖ La gestion des exceptions en C # est basée sur quatre mots clés:  try: Un bloc try identifie un bloc de code au niveau du quel des exceptions particulières sont levées. Il est suivi d'un ou plusieurs blocs de capture  Catch: Le mot-clé catch indique la capture d'une exception dans un bloque alternatif  Finally: Il est utilisé pour exécuter un ensemble d'instructions, qu'une exception soit levée ou non  throw: Une instruction qui lève une exception lorsqu'un problème apparaît Erreurs 3 Catégories
  • 56. Préparation de la certification MCSD 70-483: Programmer en C# ❖ L’ erreur est un flux d’exécution non correct connu dans l'application ❖ Habituellement, dans ce cas, l'application peut intercepter ces exceptions et / ou écrire un gestionnaire générique pour gérer toutes les exceptions dans le système ❖ L’ exception, est généralement lancée lorsque quelques choses inattendues se produit dans l'application Par exemple: l'ouverture d'un fichier non existant Par exemple: La comparaison avec un objet nulle ❖ Une erreur dans la logique du programme pouvant entraîner une exception. Cependant, l'erreur doit être traitée non pas par la gestion des exceptions mais en modifiant le code défectueux Présentation 1 2 Erreurs 3 Catégories 4 Anatomie Introduction des exceptions
  • 57. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Erreurs 3 Catégories Exemple de code 4 Anatomie Introduction des exceptions
  • 58. Préparation de la certification MCSD 70-483: Programmer en C# Exception Application Exception System Exception Les catégories des exceptions Présentation 1 2 Erreurs 3 Catégories 4 Anatomie Introduction des exceptions
  • 59. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Erreurs 3 Catégories 4 Anatomie Propriétés Description Acesseurs Message Fournit des détails sur la cause de l'exception get; StackTrace Fournit des informations sur l'endroit où l'erreur s'est produite get; InnerException Fournit des informations sur la série d'exceptions qui ont pu se produire get; HelpLink Fournit l'URL d'aide pour une exception particulière get;set; Data Fournit des données arbitraires dans des paires clé-valeur get; TargetSite Fournit le nom de la méthode où cette exception a été levée get; Source Fournit des informations sur l’application source d’exception get;set Introduction des exceptions
  • 60. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Erreurs 3 Catégories 4 Anatomie Méthodes Description GetBaseException Retourne le type de base de l’exception levée GetObjetData Ajoute de l’extra logique lors de la sérialisation / déserialisation d’une exception Introduction des exceptions
  • 61. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Introduction des exceptions
  • 62. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les types blocs des exceptions Partie I
  • 63. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 Exemples de blocs throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When
  • 64. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Signale l’occurrence d’une exception pendant l’exécution du programme ❖ Peut également être utilisé dans un bloc catch pour lever de nouveau une exception gérée dans un bloc catch Les types de blocs d’exceptions 5 When
  • 65. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Il faut faire attention entre usage les deux codes suivants Les types de blocs d’exceptions 5 When Code 1 Code 2
  • 66. Préparation de la certification MCSD 70-483: Programmer en C# ❖ On perd les informations concernant l’origine de levée d’exception lorsqu’on utilise throw ex au lieu de throw Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas d’utilisation de throw
  • 67. Préparation de la certification MCSD 70-483: Programmer en C# ❖ On perd les informations concernant l’origine de levée d’exception lorsqu’on utilise throw ex au lieu de throw Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas d’utilisation de throw ex
  • 68. Préparation de la certification MCSD 70-483: Programmer en C# ❖ Le code du bloc finally est lancé que ce soit une exception est levée ou pas Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas connexion à SQL Server
  • 69. Préparation de la certification MCSD 70-483: Programmer en C# ❖ Le bloc finally est utilisé pour libérer des ressourcesTypes de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Il n’est pas possible d’utiliser return continue ou break au niveau d’un bloc finally Les types de blocs d’exceptions 5 When
  • 70. Préparation de la certification MCSD 70-483: Programmer en C# Les types de blocs d’exceptions ❖ Lorsqu’il s’agit de plusieurs exceptions à capturer il faut commencer de la plus spéciale vers la plus générale Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Correct Incorrect 5 When
  • 71. Préparation de la certification MCSD 70-483: Programmer en C# Les types de blocs d’exceptions ❖ Il est possible de filtrer les exceptions selon des critères bien déterminés basés sur les valeurs des propriétés Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs 5 When
  • 72. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les types de blocs d’exceptions
  • 73. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les types blocs des exceptions Partie II
  • 74. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 Exemples de blocs throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When
  • 75. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Signale l’occurrence d’une exception pendant l’exécution du programme ❖ Peut également être utilisé dans un bloc catch pour lever de nouveau une exception gérée dans un bloc catch Les types de blocs d’exceptions 5 When
  • 76. Préparation de la certification MCSD 70-483: Programmer en C# Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Il faut faire attention entre usage les deux codes suivants Les types de blocs d’exceptions 5 When Code 1 Code 2
  • 77. Préparation de la certification MCSD 70-483: Programmer en C# ❖ On perd les informations concernant l’origine de levée d’exception lorsqu’on utilise throw ex au lieu de throw Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas d’utilisation de throw
  • 78. Préparation de la certification MCSD 70-483: Programmer en C# ❖ On perd les informations concernant l’origine de levée d’exception lorsqu’on utilise throw ex au lieu de throw Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas d’utilisation de throw ex
  • 79. Préparation de la certification MCSD 70-483: Programmer en C# ❖ Le code du bloc finally est lancé que ce soit une exception est levée ou pas Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Les types de blocs d’exceptions 5 When Cas connexion à SQL Server
  • 80. Préparation de la certification MCSD 70-483: Programmer en C# ❖ Le bloc finally est utilisé pour libérer des ressourcesTypes de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs ❖ Il n’est pas possible d’utiliser return continue ou break au niveau d’un bloc finally Les types de blocs d’exceptions 5 When
  • 81. Préparation de la certification MCSD 70-483: Programmer en C# Les types de blocs d’exceptions ❖ Lorsqu’il s’agit de plusieurs exceptions à capturer il faut commencer de la plus spéciale vers la plus générale Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs Correct Incorrect 5 When
  • 82. Préparation de la certification MCSD 70-483: Programmer en C# Les types de blocs d’exceptions ❖ Il est possible de filtrer les exceptions selon des critères bien déterminés basés sur les valeurs des propriétés Types de bloques 1 2 throw 3 finally 4 Hiérarchie en blocs 5 When
  • 83. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les types de blocs d’exceptions
  • 84. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les exceptions les plus utilisées
  • 85. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées ❖ Listes des domaines  Système  Entrée / sortie  Web  Les données
  • 86. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Système ArithmeticException DividedByZeroException OutOfMemoryException NotImplementedException OverflowException StackOverflowException NullReferenceException AgregateException ArgumentException ArgumentNullException ArgumentOutOfRangeException IndexOutOfRangeException InsufficientMemoryException TimeoutException
  • 87. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Les données DbException OleDbException SqlException SqlTypeException DBConcurrencyException SqlNullValueException DataException ConstraintException InvalidUdtException
  • 88. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Les entrées sorties DriveNotFoundException EndOfStreamException FileLoadException IOExceptionFileNotFoundException IsolatedStorageException Le Web HttpException HttpUnhandledException HttpParseException MembershipCreateUserException HttpRequestValidationException IsolatedStorageException MembershipPasswordException
  • 89. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les exceptions les plus utilisées
  • 90. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les exceptions les plus utilisées Partie II
  • 91. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées ❖ Listes des domaines  Système  Entrée / sortie  Web  Les données
  • 92. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Système ArithmeticException DividedByZeroException OutOfMemoryException NotImplementedException OverflowException StackOverflowException NullReferenceException AgregateException ArgumentException ArgumentNullException ArgumentOutOfRangeException IndexOutOfRangeException InsufficientMemoryException TimeoutException
  • 93. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Les données DbException OleDbException SqlException SqlTypeException DBConcurrencyException SqlNullValueException DataException ConstraintException InvalidUdtException
  • 94. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Catégories Les exceptions les plus utilisées Les entrées sorties DriveNotFoundException EndOfStreamException FileLoadException IOExceptionFileNotFoundException IsolatedStorageException Le Web HttpException HttpUnhandledException HttpParseException MembershipCreateUserException HttpRequestValidationException IsolatedStorageException MembershipPasswordException
  • 95. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les exceptions les plus utilisées
  • 96. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les exceptions personnalisées
  • 97. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Exemple Les exceptions personnalisées ❖ Lors de la conception de classes d'exceptions personnalisées, vous devez dériver votre classe de System.Exception et non de ApplicationException ❖ ApplicationException était à l'origine destiné à être utilisé pour créer des exceptions définies par l'utilisateur, mais son utilisation n'est plus recommandée Microsoft ❖ Vous devez dériver des exceptions personnalisées de la classe Exception plutôt que de la classe ApplicationException
  • 98. Préparation de la certification MCSD 70-483: Programmer en C# Présentation 1 2 Exemple Les exceptions personnalisées
  • 99. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les exceptions personnalisées
  • 100. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Ré cap sur les exceptions
  • 101. Préparation de la certification MCSD 70-483: Programmer en C# Remarques 1 Ré cap sur les exceptions ❖ Exception est une classe de base pour tout type de classe d'exception en C # ❖ Types d'exceptions: SystemException et ApplicationException. ❖ La classe SystemException est utilisée pour les erreurs d'exécution liées au CLR. ❖ La classe Exception inclut des propriétés importantes, par exemple Message, StackTrace, InnerException, Data ❖ Le bloc try doit être suivi d'un catch ou d'un block finally ou des deux. ❖ Un bloc catch multiple est autorisé avec différents filtres d'exception. Le bloc catch général {..} doit venir en dernier.
  • 102. Préparation de la certification MCSD 70-483: Programmer en C# Ré cap sur les exceptions ❖ catch {..} et catch (Exception ex) {} ne peuvent pas être utilisés ensemble ❖ Le bloc finally doit venir après le bloc try ou catch. ❖ Le bloc finally s'exécutera toujours, qu'une exception soit survenue ou non. ❖ Le bloc finally est l'endroit approprié pour disposer des objets. ❖ Le bloc finally ne peut pas avoir de retour ou de pause car il ne permet pas de quitter le contrôle. ❖ Les blocs try-catch imbriqués sont autorisés en C # ❖ Une exception sera interceptée dans le bloc catch interne si le filtre approprié est trouvé, autrement sera attrapé par le bloc catch externe Remarques 1
  • 103. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Ré cap sur les exceptions
  • 104. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Une vue sur l'écosystème Multithreading en .Net
  • 105. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net ❖ Les axes  Les Threads  La classe BackgroundWorker  Les Tasks  Les continuations  Les annulations ou Cancellations  Les verrouillages et les synchronisations
  • 106. Préparation de la certification MCSD 70-483: Programmer en C# Les points clé 1 Une vue sur l’écosystème Multithreading en .Net ❖ Les Threads  Les threads sont des processus légers, un thread est défini comme le chemin d'exécution d'un programme  Chaque thread définit un flux de contrôle unique  L'utilisation des threads économise le gaspillage du cycle du processeur et augmente l'efficacité d'une application  Le thread est représenté par la classe Thread
  • 107. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net ❖ Le BackgroundWorker  Relier la méthode à exécution de longue durée à l'événement DoWork  Commencer l'opération en appelant RunWorkerAsync  Pour obtenir des informations sur le déroulement de l'opération, il faut s’abonner à l’événement ProgressChanged  Pour savoir quand l'opération longue est terminée, abonnez- vous à l'événement RunWorkerCompleted  Pour interagir avec l’ exécution il est possible à travers les membres de DoWorkEventArgs à savoir, Argument et Result
  • 108. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net ❖ Les Tasks  A partir de C# 4.0 une nouvelle bibliothèque s’ajoute System.Threading.Tasks  A la différence du Thread, l’objet Task peut retourner un objet  Le mécanisme d’attente pour un ensemble de tâches se fait sans besoin de l’extra code de signalisation  L'exception de tâche enfant peut se propager à la tâche parente, avec possibilité d’annulation de tâches avec les Cancelation Token  La possibilité d’enchaîner les tâches pour les exécuter les unes après les autres, avec même un établissement de relation hiérarchique parents/ enfants  L'implémentation asynchrone est facile dans la tâche, en utilisant les mots-clés async et await
  • 109. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net ❖ Les annulations  La classe CancellationTokenSource pour contrôler les opérations annulables, et la structure CancellationToken ❖ Les continuations  Continuer une tâche en appelant les méthodes ContinueWith, WhenAll ou WhenAny  Il faut comprendre la différence entre WhenAll ou WhenAny d’une part et WaitAny WaitAll d’autre part
  • 110. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net ❖ Les verrouillages & synchronisations  Les mécanismes et objets de verrouillage et gestion d’accès aux sources partagées dans un contexte Multithread  Mots clé Interlocked et lock qui permet de gérer les accès concurrents aux ressources et aux zones critiques  Les méthodes synchronisées décorées par [MethodImpl(MethodImplOptions.Synchronized)]  La classe ReaderWriterLock  Les classes Monitor, Mutex et Semaphore
  • 111. Préparation de la certification MCSD 70-483: Programmer en C# Les points clés 1 Une vue sur l’écosystème Multithreading en .Net APM EAP TPL deadlock Synchronisation TaskFactory Threadpool atomicité Async/await ❖ Quelques concepts clé
  • 112. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Une vue sur l’écosystème Multithreading en .Net
  • 113. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les Threads
  • 114. Préparation de la certification MCSD 70-483: Programmer en C# Les états 1 Les threads Démarqué En attente Lancé Avorté Sleep/Interrupt Join Start Abort Schéma qui représente les états de Thread Membres 2 Start 3 Join 4 Interrupt & Abort 5 ResetAbort
  • 115. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Propriétés Description Name Obtient ou définit le nom du thread. Priority Obtient ou définit une valeur indiquant la priorité de planification d'un thread. ThreadState Obtient une valeur contenant les états du thread actuel. IsAlive Obtient une valeur indiquant l'état de l'exécution du thread actuel. IsBackground Obtient ou définit une valeur indiquant si le thread est un thread d'arrière-plan ou non. CurrentThread Obtient le thread en cours d'exécution. CurrentPrincipal Obtient ou définit le principal actuel du thread. CurrentCulture Obtient ou définit la culture du thread actuel. Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 116. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Propriétés Description IsThreadPoolThread Indique si un thread appartient au pool de threads managés ou non. ManagedThreadId Obtient un identificateur unique pour le thread managé actuel. ExecutionContext Obtient un objet ExecutionContext qui contient des informations relatives aux divers contextes du thread actuel. Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 117. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Méthodes Description Start() Lance le thread. Sleep() Suspend le thread actuel pendant la durée spécifiée. Join() Bloque le thread appelant jusqu’à ce que le thread représenté par cette instance s’arrête Interrupt() Interrompt un thread dont l'état est WaitSleepJoin Abort() Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu ResetAbort() Annule un Abort demandé pour le thread actuel. VolatileRead() Lit la valeur d'un champ volatile VolatileWrite() Écrit immédiatement une valeur dans un champ volatile Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 118. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Méthodes Description BeginCriticalRegion() Avertit un hôte que l'exécution est sur le point d'entrer dans une zone de code dans laquelle les effets d'un abandon de thread ou d'une exception non gérée peuvent compromettre d'autres tâches EndCriticalRegion() Avertit un hôte que l'exécution est sur le point d'entrer dans une zone de code dans laquelle les effets d'un abandon de thread ou d'une exception non gérée sont limités à la tâche actuelle MemoryBarrier() MemoryBarrier est requis uniquement sur les systèmes multiprocesseurs avec une faible mémoire tri, équivalente à l’emploi de lock Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 119. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Lancement de Thread sans passage de paramètres Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 120. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Lancement de Thread avec passage de paramètres Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 121. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Utilisation du délégué Utilisation de l’expression lambda Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 122. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Cas d’utilisation de join Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 123. Préparation de la certification MCSD 70-483: Programmer en C# Les threads Cas d’utilisation d’interrupt Cas d’utilisation de abort Bloqué Arrêté Les états 1 Membres 2 Start 3 Join 4 Interrupt & Abort 5
  • 124. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les threads
  • 125. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant La classe BackgroundWorker
  • 126. Préparation de la certification MCSD 70-483: Programmer en C# Membres 1 La classe BackgroundWorker Exploitation 2 Propriétés Description WorkerReportsProgress Obtient ou définit une valeur indiquant si le BackgroundWorker peut signaler des mises à jour de progression. WorkerSupportsCancellation Obtient ou définit une valeur indiquant si le BackgroundWorker prend en charge l’annulation asynchrone. IsBusy Obtient une valeur indiquant si le BackgroundWorker une opération asynchrone est en cours d’exécution. CancellationPending Obtient une valeur indiquant si l’application a demandé l’annulation d’une opération d’arrière- plan.
  • 127. Préparation de la certification MCSD 70-483: Programmer en C# La classe BackgroundWorker Méthodes Description RunWorkerAsync() Démarre l’exécution d’une opération d’arrière-plan. CancelAsync() Demande l’annulation d’une opération d’arrière-plan en attente. ReportProgress() Déclenche l'événement ProgressChanged. Membres 1 Exploitation 2 Evènements Description DoWork Se produit lorsque RunWorkerAsync est appelé. ProgressChanged Se produit lorsque ReportProgress est appelé. RunWorkerCompleted Se produit lorsque l’opération d’arrière-plan est terminée, a été annulée ou a levé une exception.
  • 128. Préparation de la certification MCSD 70-483: Programmer en C# La classe BackgroundWorker Membres 1 2 Exploitation 5 Les gestionnaires d’événements 1 Appel du BackgroundWorker
  • 129. Préparation de la certification MCSD 70-483: Programmer en C# La classe BackgroundWorker Membres 1 2 Exploitation 2 3 Les gestionnaires d’événements 4
  • 130. Préparation de la certification MCSD 70-483: Programmer en C# La classe BackgroundWorker Membres 1 2 Exploitation Gestionnaires d’événementsinitialisation Appel Appel: RunWorkerAsync() CancelAsync() Vérification : IsBusy Appel: ReportProgress () Vérification : CancellationPending Vérification: Args.ProgressPercentage Vérification: Args.Cancelled
  • 131. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ La classe BackgroundWorker
  • 132. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les Tasks
  • 133. Préparation de la certification MCSD 70-483: Programmer en C# Membres 1 Les Tasks Création 2 Propriétés Description Status Obtient le TaskStatus de cette tâche. IsFaulted Indique si Task s'est terminé suite à une exception non gérée. IsCompleted Indique si cet Task s'est terminé. IsCanceled Indique si cette instance de Task s'est exécutée avec succès suite à une annulation. Id Obtient un ID pour cette instance de Task. Factory Fournit l'accès aux méthodes de fabrique pour la création d'instances de Task et de Task<TResult> Exception Obtient le AggregateException qui a provoqué l'arrêt prématuré de Task. Async/await 3 AgregationException 4
  • 134. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Propriétés Description AsyncState Obtient l'objet d'état fournit quand Task a été créé, ou null si aucun n'a été fournit. CompletedTask Obtient une tâche qui s’est déjà terminée correctement. CreationOptions Obtient les TaskCreationOptions utilisées pour créer cette tâche. CurrentId Retourne l'ID du Task en cours d'exécution. Membres 1 Création 2 Async/await 3 AgregationException 4
  • 135. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Méthodes Description ConfigureAwait Configure un élément awaiter utilisé pour attendre cette tâche ContinueWith Crée des tâches de continuation. Delay Crée une tâche après la durée spécifiée. Run Crée une tâche et la place en file d'attente pour commencer à s’executer. RunSynchronously Exécute une tâche de manière synchrone. Start Commence une tâche. Wait Attend la fin de la tâche. WaitAll Attend que toutes les tâches soient terminées. Membres 1 Création 2 Async/await 3 AgregationException 4
  • 136. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Méthodes Description WaitAny Attend que l'une des tâches d'un ensemble se termine. WhenAny Crée une tâche qui se termine lorsque toutes les tâches spécifiées sont terminées Membres 1 Création 2 Async/await 3 AgregationException 4
  • 137. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Techniques de lancement des Tasks Membres 1 Création 2 Async/await 3 AgregationException 4
  • 138. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Techniques de lancement des Tasks Membres 1 Création 2 Async/await 3 AgregationException 4
  • 139. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Techniques de lancement des Tasks Membres 1 Création 2 Async/await 3 AgregationException 4
  • 140. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Membres 1 Création 2 Async/await 3 AgregationException 4 Techniques d’utilisation async await
  • 141. Préparation de la certification MCSD 70-483: Programmer en C# Les Tasks Membres 1 Création 2 Async/await 3 AgregationException 4 Exemple d’aggregatexception
  • 142. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les Tasks
  • 143. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les annulations
  • 144. Préparation de la certification MCSD 70-483: Programmer en C# Les annulations ❖ Les annulations pour le cas des Tasks, il faut réviser les éléments suivants pour l’examen MCSD  La classe CancellationTokenSource et la structure CancellationToken  L’exception AgregationException ❖ Les annulations pour le cas des ThreadsRubriques 1 Cas de Thread 2 Cas de Task Cas de BackGWorker 4 3 ❖ Les annulations pour le cas de la classe Backgroundworker
  • 145. Préparation de la certification MCSD 70-483: Programmer en C# Les annulations ❖ Pour le cas des Threads, il faut implémenter le mécanisme suivantRubriques 1 Cas de Thread 2 Cas de Task Cas de BackGWorker 4 3 Exemple de mécanisme d’annulation de Thread
  • 146. Préparation de la certification MCSD 70-483: Programmer en C# Les annulations ❖ Pour le cas du BackgroundWorker, il suffit de passer la valeur true à e.Cancel de DoWorkEventArgs du DoWork_Handler pour une condition donnée Rubriques 1 Cas de Thread 2 Cas de Task Cas de BackGWorker 4 3 Exemple de mécanisme d’annulation de tâche
  • 147. Préparation de la certification MCSD 70-483: Programmer en C# Les annulations ❖ Pour le cas des Tasks , il suffit d’utiliser la classe CancellationTokenSource et la structure CancellationToken Rubriques 1 Cas de Thread 2 Cas de Task Cas de BackGWorker 4 3 Exemple de mécanisme d’annulation de tâche
  • 148. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les annulations
  • 149. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les continuations
  • 150. Préparation de la certification MCSD 70-483: Programmer en C# Les continuations Rappel 1 ❖ C’est l’enchainement d’exécutions des opérations d’une manière séquentielle ❖ Avant que la bibliothèque TPL ne soit disponible, les continuations sont effectuées en utilisant des méthodes de rappel « CallBack ». ❖ Une continuation n'est qu'une autre tâche qui ne bloque pas le thread sur lequel elle est appelée. ❖ Les avantages des continuations sont:  Une Invocation d’une ou plusieurs tâches en utilisant le même antécédent  Une spécification de certaines conditions sur la base des quelles les suites doivent être exécutées  Une Transmission des données d'une tâche antécédente à une tâche de continuation ContinueWith 2 WhenAny WhenAll 4 3
  • 151. Préparation de la certification MCSD 70-483: Programmer en C# Les continuations Rappel 1 ContinueWith 2 WhenAny WhenAll 4 3 Simple exemple qui utilise ContinueWith
  • 152. Préparation de la certification MCSD 70-483: Programmer en C# Les continuations Simple exemple qui utilise WhenAll avec Fibonaci ❖ Pour exécuter une continuation quand toutes les tâches antécédentes sont terminées, on effectue l’appel de la méthode WhenAll Rappel 1 ContinueWith 2 WhenAny WhenAll 4 3
  • 153. Préparation de la certification MCSD 70-483: Programmer en C# Les continuations Simple exemple qui utilise WhenAny avec Fibonaci ❖ Pour exécuter une continuation quand n'importe quelle tâche d'antécédent est terminée, vous appelez la méthode statique Task.WhenAny Rappel 1 ContinueWith 2 WhenAny WhenAll 4 3
  • 154. Préparation de la certification MCSD 70-483: Programmer en C# Les continuations Rappel 1 Cas de Thread 2 Cas de Task Cas de BackGWorker 4 3 ❖ A ne pas confondre WhenAny et WhenAll avec WaitAny et WaitAll ❖ Deux premières sont utilisées pour la continuation et les deux dernières sont utilisées pour la synchronisation
  • 155. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les continuations
  • 156. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les synchronisations
  • 157. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 ❖ Le verrouillage avec l’objet lock ❖ L’atomicité des opérations avec interlocked ❖ La différence entre lock, Mutex, Monitor et Semaphore ❖ La synchronisation avec l’attribut MethodImpl ❖ WaitAll et WaitAny pour le cas des Tasks ❖ Le Deadlock
  • 158. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3
  • 159. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 ❖ lock (this) n’est pas conseillé si l’instance est accessible publiquement. ❖ lock (‘chaine’) tout code utilisant la même chaîne partagera le même verrou. ❖ lock (typeof(monType)) tout code utilisant le même objet partagera le même verrou. ❖ La bonne pratique consiste à définir un objet privé statique, pour protéger les données communes à toutes les instances. ❖ Pour le cas des Tasks il n’est pas possible d’utiliser le mot clé await.
  • 160. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 Un simple code créant un verrouillage sur une zone sensée critique
  • 161. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 Un simple code créant un verrouillage sur opération atomique
  • 162. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 méthode Description Add() Représente la somme, sous la forme d'une opération atomique CompareExchange() Compare deux nombres Decrement() Décrémente une variable spécifiée et stocke le résultat, sous la forme d'une opération atomique Increment() Incrémente une variable spécifiée et stocke le résultat sous la forme d'une opération atomique. Exchange() Affecte une valeur spécifiée à un handle ou un pointeur Read(Int64) Retourne une valeur 64 bits chargée sous la forme d'une opération atomique
  • 163. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 lock 2 MethodImpl Interlocked 4 3 Synchronisation de méthodes
  • 164. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les synchronisations
  • 165. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les synchronisations Partie II
  • 166. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 ❖ Le verrouillage avec l’objet lock ❖ L’atomicité des opérations avec interlocked ❖ La différence entre Monitor, Mutex, Semaphore, ReaderWrtierLockSlim ❖ La synchronisation avec l’attribut MethodImpl ❖ WaitAll et WaitAny pour le cas des Tasks ❖ Le Deadlock ❖ La classe TaskSchedulerLes Tasks 4
  • 167. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 Exemple de méthode potentiellement génératrice d’un DeadLock Les Tasks 4
  • 168. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 Exemple de DeadLock Les Tasks 4 Ressource: R1 Ressource: R2 Thread: T1 Thread: T2 Assignée à T2 par (objet verrou A ) Assignée à T1 par (objet verrou B ) En attente de En attente de =
  • 169. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 Exemple de DeadLock dans la vie courante Les Tasks 4
  • 170. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 Appel du code précédent qui produit une situation de DeadLock Les Tasks 4
  • 171. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 DeadLock 2 Classes de verrouillage 3 Etude comparative des classes de verrouillage selon Joseph Albahari Classe Description Inter Process Charge d’exécution (ns) Monitor (lock) Garantit qu'un seul thread peut accéder à une ressource ou à une section de code à la fois non 20 Mutex oui 1000 SemaphoreSlim Garantit que pas plus d'un nombre spécifié de threads concurrents peuvent accéder à une ressource ou à une section de code non 200 Semaphore oui 1000 ReaderWriterLockSlim Permet plusieurs lectures de coexister avec un seule écriture non 100Les Tasks 4 Comparaison de classes de verrouillage:
  • 172. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Equivalence entre lock et Monitor Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4 La classe Monitor:
  • 173. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations La classe Monitor: méthode Description IsEntered(Object) Détermine si le thread actuel détient le verrou sur l'objet spécifié. Pulse(Object) Avertit un thread situé dans la file d'attente d'un changement d'état de l'objet verrouillé. PulseAll(Object) Avertit tous les threads en attente d'un changement d'état de l'objet. TryEnter() Essaie d'acquérir un verrou exclusif sur l'objet spécifié. Wait(Object) Libère le verrou d'un objet et bloque le thread actuel jusqu'à ce qu'il acquière à nouveau le verrou. Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4
  • 174. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations ❖ Mutex est comme monitor, ce pendant elle peut fonctionner sur plusieurs processus à l'échelle de l'application. Exemple basique de verrouillage d’accès avec Mutex Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4 La classe Mutex:
  • 175. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations La classe Mutex: méthode Description GetAccessControl() Obtient un objet MutexSecurity qui représente la sécurité de contrôle d'accès. OpenExisting() Ouvre le mutex nommé spécifié, s'il existe déjà. WaitOne() Bloque le thread actuel jusqu'à ce que le WaitHandle actuel reçoive un signal. TryOpenExisting() Ouvre le mutex nommé spécifié, s'il existe déjà, et retourne une valeur indiquant si l'opération a réussi. Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4
  • 176. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations ❖ Une classe sémaphore c’ est comme les toilettes publiques qui a une certaine capacité. Une fois elles sont pleines, plus personne ne peut entrer Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4 Monitor & Mutex Semaphore La classe Semaphore:
  • 177. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Exemple basique de verrouillage d’accès avec Semaphore Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4 La classe Semaphore:
  • 178. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations La classe Semaphore: méthode Description SetAccessControl() Définit la sécurité de contrôle d'accès pour un sémaphore système nommé. OpenExisting() Ouvre le semaphore nommé spécifié, s'il existe déjà. WaitOne() Bloque le thread actuel jusqu'à ce que le WaitHandle actuel reçoive un signal. TryOpenExisting() Ouvre le semaphore nommé spécifié, s'il existe déjà, et retourne une valeur indiquant si l'opération a réussi. Rubriques 1 DeadLock 2 Classes de verrouillage 3 Les Tasks 4
  • 179. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les synchronisations
  • 180. Préparation de la certification MCSD 70-483: Programmer en C# Gestion du flux de programme Béchir BEJAOUI Formateur et consultant indépendant Les synchronisations-Partie III
  • 181. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations ❖ Le verrouillage avec l’objet lock ❖ L’atomicité des opérations avec interlocked ❖ La différence entre Monitor, Mutex, Semaphore, ReaderWrtierLockSlim ❖ La synchronisation avec l’attribut MethodImpl ❖ WaitAll et WaitAny pour le cas des Tasks ❖ Le Deadlock ❖ La classe TaskScheduler Rubriques 1 WaitAny/WaitAll 2 3 TaskScheduler
  • 182. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 WaitAny/WaitAll 2 3 TaskScheduler ❖ Les principales différences entre l’utilisation de WaitAny et WaitAll  WaitAny attend jusqu’à au moins la terminaison de l’une des tâches, WaitAll attend jusqu’à la terminaison de toutes les tâches  WaitAny retourne un objet générique , WaitAll est void  L’appel à la méthode WaitAll encapsule toutes les exceptions dans une AggregateException de l’objet et les propage vers le thread appelant.
  • 183. Préparation de la certification MCSD 70-483: Programmer en C# Les synchronisations Rubriques 1 WaitAny/WaitAll 2 3 TaskScheduler ❖ Représente un objet qui gère les tâches de bas niveau de la mise en file d'attente de tâches sur des threads. ❖ TaskScheduler est une classe abstraite, elle ne peut pas être instanciée. ❖ TaskScheduler fournit une méthode de gestion de partition de travail pour l'équilibrage de charge La classe TaskScheduler:
  • 184. Préparation de la certification MCSD 70-483: Programmer en C# Ce qu’on a vu ▪ Les synchronisations
  • 185. Préparation de la certification MCSD 70-483: Programmer en C# Le Bilan Béchir BEJAOUI Formateur et consultant indépendant Ce que nous avons vu ensemble
  • 186. Préparation de la certification MCSD 70-483: Programmer en C# Le bilan ❖ Chapitre I  Un petit rappel ❖ Chapitre II  Des Notions sur des types  Les principes de programmation orientée objets  Des notes à propos les définitions et l’usage des méthodes  La différence entre les délégués et les expressions Lambda  Les notions de programmation dynamique et de réflexion
  • 187. Préparation de la certification MCSD 70-483: Programmer en C# Le bilan ❖ Chapitre III  Un point d’ordre  Les notions relatives aux définitions et utilisations des exceptions  Les Threads & la classe BackgroundWorker  Les Tasks, les continuations et les annulations  Les notions du le principe de synchronisation dans un contexte de programmation multithreading
  • 188. Préparation de la certification MCSD 70-483: Programmer en C# Le bilan A Bientôt