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

Windows Forms Discussion :

Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent une autre mémoire est endommagée


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent une autre mémoire est endommagée
    Bonjour a tous,

    Voila je débute avec le c# et j'ai un problème dans visual studio, quelle problème peux générer cette erreur :
    Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
    ?




    Es-ce possible grâce a cette fenêtre d'aide de savoir a quelle instruction l'appli a planté ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Tu fais quoi avec ton application?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    je récupère un flux vidéo, et j'ai un bouton qui me permet de prendre une photo, j'analyse ensuite la photo.

    Dans la boucle qui récupère la photo et l'analyse j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RImage a = new RImage(ba);
    Si je vire cette ligne je n'ai plus de problème.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Elle vient de où ta classe RImage?

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Elle vient de la librairie rvision.

    Je commence a me rapproché de la source du problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bitmap b = new Bitmap(w, h, -stride, PixelFormat.Format24bppRgb, (IntPtr)scan0);
     
    // L'erreur est ici
    RImage a = new RImage(b);
    J'ai l'impression que de temps a autre la variable b n'est pas encore disponible.
    Je viens de rajouter le code qui met b dans une pictureBox et de temps en temps sa plante de la même manière.

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent une autre mémoire est endommagée
    Bonjour a tous, alors voila j'ai toujours le même problème depuis quelques jours.

    Je voudrais récupérer un flux vidéo et toutes les x secondes prendre une photo et l'afficher dans une pictureBox. Seulement j'ai toujours ce message d'erreur qui apparait et je n'arrive pas a trouvé comment résoudre ce problème.

    Voici mon code simplifié:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    private void toolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e){
     
            int hr;
     
            if (sampGrabber == null)
                return;
     
                if (savedArray == null)
                {
                    int size = videoInfoHeader.BmiHeader.ImageSize;
                    if ((size < 1000) || (size > 16000000))
                        return;
                    savedArray = new byte[size + 64000];
                }
                pictureBox1.Image = null;
     
                captured = false;
                hr = sampGrabber.SetCallback(this, 1);
     
     
            if (this.toolBarBtnGrab.Text == "Stopper l'analyse")
            {
                // Le thread est en route et on le tue
                if(this.trouverLeCab.IsAlive){
                    this.trouverLeCab.Abort();
                }
                this.toolBarBtnGrab.Text = "Analyser";
            }
            else
            {
                // Le thread n'est pas en cours d'execution et on le lance
                trouverLeCab = new Thread(new ThreadStart(this.trouverCab));
                trouverLeCab.Start();
                this.toolBarBtnGrab.Text = "Stopper l'analyse";
            }
     
     
     
     
    }
     
     
       delegate void RecupererImage(string i);
        public void recupererAfficherImage(string i)
        {
            try
            {
                int hr;
                if (sampGrabber == null)
                    return;
                hr = sampGrabber.SetCallback(null, 0);
     
                int w = videoInfoHeader.BmiHeader.Width;
                int h = videoInfoHeader.BmiHeader.Height;
                if (((w & 0x03) != 0) || (w < 32) || (w > 4096) || (h < 32) || (h > 4096))
                    return;
                int stride = w * 3;
     
                GCHandle handle = GCHandle.Alloc(savedArray, GCHandleType.Pinned);
                int scan0 = (int)handle.AddrOfPinnedObject();
                scan0 += (h - 1) * stride;
     
                Bitmap b = new Bitmap(w, h, -stride, PixelFormat.Format24bppRgb, (IntPtr)scan0);
                handle.Free();
                savedArray = null;
     
                //b.Save("../../image/img" + i + ".bmp");
                //b.Dispose();
                //Image.Save("../../image/img"+i+".bmp", ImageFormat.Bmp);
                //pictureBox1.Image = null;
                //pictureBox1.Image = b;
                //MessageBox.Show(this, "No video capture devices found!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
            catch (Exception ee)
            {
                MessageBox.Show(this, "Could not grab picture\r\n" + ee.Message, "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }
     
    delegate void AjoutTextBoxText(string Texte);
        public void AjoutTextBox(string Texte)
        {
            this.label1.Text = Texte;
        }
     
    private void trouverCab()
        {
            int i = 0;
            // Tant que le thread n'est pas tué, on travaille
            while (Thread.CurrentThread.IsAlive)
            {
                i = i + 1;
                // Attente de 5000 ms
                Thread.Sleep(5000);
               // MessageBox.Show("");
                //this.label1.Text = i.ToString();
                AjoutTextBoxText ajoutText = new AjoutTextBoxText(AjoutTextBox);
                Invoke(ajoutText, i.ToString());
     
     
                RecupererImage test = new RecupererImage(recupererAfficherImage);
                Invoke(test, i.ToString());
    }
    }
    J'ai l'impression que c'est la variable bitmap b qui me pose problème.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2016, 12h48
  2. Réponses: 0
    Dernier message: 24/08/2013, 14h05
  3. Tentative de lecture ou d'écriture de mémoire protégée
    Par neon90 dans le forum Visual Studio
    Réponses: 3
    Dernier message: 03/11/2012, 12h18
  4. Réponses: 2
    Dernier message: 09/07/2010, 13h31
  5. Réponses: 3
    Dernier message: 30/06/2009, 15h45

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