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

Langages Discussion :

[WPF] Mettre à jour un composant MediaElement


Sujet :

Langages

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 39
    Points : 33
    Points
    33
    Par défaut [WPF] Mettre à jour un composant MediaElement
    Bonjour
    je butte sur un problème que donc, je n'arrive pas à résoudre.

    le principe (dans l'absolu) est simple.

    J'ai une une fenêtre (WPF ou Formulaire) dans laquelle je veux faire apparaitre un gif ou un mp4. et durant l'affichage je veux envoyer ce fichier par mail. ces fichiers sont stockés dans un dossier "en_attente" et un fois traités ils sont copiés dans "envoye".
    là ou je butte, c'est l'affichage de l'image animée (ou pas) qui n'apparait qu'a la fin du traitement mais je la veux du début à la fin du traitement.

    voilà le xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <Window x:Class="Envoi_mail.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="500" Width="800" >
        <Grid Background="White">
            <MediaElement Name="a_envoyer"  HorizontalAlignment="Center" Height="360"  VerticalAlignment="Center" Width="640" ScrubbingEnabled="True" LoadedBehavior="Manual"   />
            <Label Name="enCoursEnvoi" Content="Labelddddd" HorizontalAlignment="Center" Margin="0,0,0,10" Width="640" Height="40" VerticalAlignment="Bottom" Background="{x:Null}" Foreground="Black" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="13"/>
        </Grid>
    </Window>
    et voilà le cs
    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
    42
    43
    44
    45
    46
     
    using System;
    using System.IO;
    using System.Windows;
    using System.Windows.Threading;
     
    namespace Envoi_mail
    {
        public partial class MainWindow : Window
        {
            private String lastfile = null;
     
            public MainWindow()
            {
                InitializeComponent();
                initApp();
            }
     
            public void initApp()
            {
                DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
                dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
                dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
                dispatcherTimer.Start();
            }
     
            private void dispatcherTimer_Tick(object sender, EventArgs e)
            {
                if (lastfile != null)
                {
                    File.Move(lastfile, lastfile.Replace("en_attente", "envoye"));
                    lastfile = null;
                }
                string path = "C:/mails/en_attente/";
                string[] files = Directory.GetFiles(path);
     
                if (files.Length != 0)
                {
                    a_envoyer.Source = new Uri(files[0]);
                    a_envoyer.Play();
                    enCoursEnvoi.Content = files[0];
                    lastfile = files[0];
                }
            }
        }
    }
    j'ai tout simplifié au maximum pour n'avoir que le minimum.


    merci de votre aide
    Bruno

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Hello !
    Je ne peux pas tester ton code, mais je pense que le problème vient du fait que tout ton traitement est exécuté dans le cycle du Dispatcher. Tu aurais tout intérêt à utiliser un Timer classique (ou un Thread, ou encore une Task) pour effectuer ce traitement. Il suffira alors d'utiliser Dispatcher.Invoke ou Dispatcher.BeginInvoke au moment d'afficher les images.

Discussions similaires

  1. D6 : Mettre à jour un composant de la palette
    Par sgmsg dans le forum Débuter
    Réponses: 0
    Dernier message: 22/01/2015, 01h37
  2. Mettre à jour un composant depuis le Bean
    Par Lady dans le forum JSF
    Réponses: 2
    Dernier message: 13/04/2012, 11h11
  3. Réponses: 0
    Dernier message: 23/03/2010, 12h31
  4. Mettre à jour un composant depuis le bean
    Par troubleshooting dans le forum JSF
    Réponses: 21
    Dernier message: 23/04/2009, 14h25
  5. Comment mettre à jour les composants dbExpress ?
    Par WebPac dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/04/2008, 18h37

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