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

C# Discussion :

Fenetre bloquée (thread) suite à une requête SQL


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur UNIFACE, C, C++, C#, Java
    Inscrit en
    Janvier 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur UNIFACE, C, C++, C#, Java
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 71
    Par défaut Fenetre bloquée (thread) suite à une requête SQL
    Bonjour,
    Besoin de vos lumières !
    Depuis ma FRM1 je lance un événement bouton_click() qui lance en fonction de plusieurs conditions une classe (Database) dans laquelle je viens faire une requête SQL (J'utilise OracleDataAcces) avec la commande ExecuteReader()
    Lorsque la requête s’exécute ma fenêtre principale (FRM1) est totalement bloquée, l'utilisateur ne peut pas réduire la fenêtre ni même la déplacer, c'est assez contraignant dans la mesure ou la requête peut mettre une 5/6 minutes à retourner le résultat.

    Nom : 111.PNG
Affichages : 198
Taille : 12,4 Ko

    Ma question est donc la suivante : Peut-on executer ce genre de méthode dans un thread ou backgroundWorker et si oui comment s'y prendre car j'ai beau essayer de mettre en place ce genre de sytème mais sans succès pour le moment.

    Merci à vous !

    Ps : ne pas prendre en compte la deuxième pièce Jointe (Impossible de la supprimer...)
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Tu peux peut-être remplacer ExecuteReader() par ExecuteReaderAsync(), et brancher une autre tâche avec ContinueWith() pour traiter le résultat de la requête.
    Ainsi la requête tournera "en tâche de fond", et la fenêtre gardera la main le temps de la requête.

    Tatayo.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur UNIFACE, C, C++, C#, Java
    Inscrit en
    Janvier 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur UNIFACE, C, C++, C#, Java
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 71
    Par défaut
    Bonjour Tatayo et merci pour ta réponse,
    J'utilise le using Oracle.DataAccess.Client;
    donc le ExecuteReaderAsync() n'est pas disponible, j'essaie de trouver une méthode similaire ou alors de passer sur un System.Data.SqlClient
    d’ailleurs je ne sais pas si c'est compatible avec de l'Oracle :s

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour Amiral62,

    Tu peux facilement transformer un méthode traditionnelle en méthode asynchrone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public MaClass MaMethode(param ...)
    { ... }
     
    public Task<MaClass> MaMethodeAsync(param...)
    {  
        Task.Run<MaClass>( () => MaMethode(param ...); 
    }
    Bon code,
    J@cK.

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ca me surprendrait qu'Oracle ne fournisse pas à minima les méthodes "BeginExecuteReader()" et "EndExecuteReader()" qui sont les méthodes asynchrones data d'avant l'apparition du async

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2013, 22h47
  2. traitement données suite à une requête sql
    Par gussss dans le forum Excel
    Réponses: 2
    Dernier message: 16/03/2012, 23h50
  3. [SQL] liste déroulante vide suite à une requête SQL
    Par berti dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/02/2008, 11h52
  4. [SQL] Erreur mysql suite à une requête
    Par vimarty dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/01/2008, 09h27
  5. [MySQL] Condition suite à une requête SQL
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/01/2007, 14h25

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