IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

ouvrir la connexion dans une base de données d'une maniére asynchrone


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut ouvrir la connexion dans une base de données d'une maniére asynchrone
    bonjour tt le monde j'ai une application qui prend en charge la BdD oracle

    j'ai besoin une idée comment ouvrir la base de données d'une manière asynchrone c 'à d au cas d'échec de connexion et refaire la connexion automatique.

    j'ai lit un article dans ce lien http://msdn2.microsoft.com/fr-fr/lib...dw(VS.80).aspx qui décrit le modèle asynchrone basé sur des événements

    d'après l'article on peut gérer un thread en parallèle en thread de l'application qui permet exécuter en arrière de plan donc d'après est ce que vous avez des idées comment implémenter d'ouvrir la connexion la BdD Oracle d'une manière asynchrone.

    merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Tu peux faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    private void StartMethod()
    {
       BackgroundWorker backgroundWorker = new BackgroundWorker();
       backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_OpenConnection);
       backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_OpenConnectionCompleted);
       backgroundWorker.RunWorkerAsync();
    }
    private void backgroundWorker_OpenConnection(object sender, DoWorkEventArgs e)
    {
        e.Result = this.OpenConnection();
    }
    private Boolean OpenConnection()
    {
       // Renvoie vrai ou faux suivant le succès de l'ouverture de la connection.
    }
    void backgroundWorker_OpenConnectionCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Boolean openConnectionResult = (Boolean) e.Result;
    }
    Si tu as un échec, tu peux ensuite réessayer pour un nombre donné de tentatives.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut
    merci pour aide je vais essayer

  4. #4
    Membre actif
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Points : 214
    Points
    214
    Par défaut
    Y'a ces deux fonctions static sont issues de Easy Object qui se base sur Entreprise Lib. 3.1

    Cela te permet d'isoler les transactions dans des threads afin de ne pas bloquer ton appli...

    Peut etre pourras tu t'en inspirer pour une connexion à la base...il me semble que la fonction public DbConnection DataBase.CreateConnection(); de Ent Lib créée un Thread à chaque création de connexion...à vérifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    	/// <summary>
    		/// Gets a the current thread's transaction manager
    		/// </summary>
    		/// <returns>The current thread's <see cref="TransactionManager"/></returns>
    		public static TransactionManager ThreadTransactionMgr() 
    		{
    			TransactionManager txMgr = null;
    			object obj = Thread.GetData(txMgrSlot);
    			if (!(obj == null)) 
    			{
    				txMgr = ((TransactionManager)(obj));
    			}
    			else 
    			{
    				txMgr = new TransactionManager();
    				Thread.SetData(txMgrSlot, txMgr);
    			}
    			return txMgr;
    		}
     
    		/// <summary>
    		/// Performs a complete reset of the thread's transaction, so that new database operations can be successful
    		/// </summary>
    		public static void ThreadTransactionMgrReset() 
    		{
    			TransactionManager txMgr = TransactionManager.ThreadTransactionMgr();
    			try 
    			{
    				if (((txMgr.txCount > 0) 
    					&& (txMgr.hasRolledBack == false))) 
    				{
    					txMgr.RollbackTransaction();
    				}
    			}
    			catch
    			{
    				//  At this point we're not worried about a failure
    			}
     
    			Thread.SetData(txMgrSlot, null);
    		}

Discussions similaires

  1. [XL-2010] sélection des données depuis une base de données depuis une autre feuille
    Par Learning everyday dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/11/2014, 10h14
  2. Réponses: 14
    Dernier message: 23/04/2012, 22h32
  3. Réponses: 3
    Dernier message: 22/10/2008, 17h55
  4. Réponses: 1
    Dernier message: 23/01/2007, 11h06
  5. Réponses: 4
    Dernier message: 19/10/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo