[C#] {"Область растрового изображения уже заблокирована."}

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ShkiperLol, 21 Feb 2011.

  1. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Здравствуйте , у меня возникла такая проблема касающаяся компонента pictureBox.

    - В pictureBox по циклу присваиваются картинки (очень часто 5-6 в секунду).
    - Все вроде хорошо pictureBox хорошо работает стабильно, но как только очень часто передвигать форму в разные стороны , то выдается ошибка которую нельзя словить catch , finally .

    [​IMG]
    Что делать ? :confused:
     
  2. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Хотелось бы увидеть метод, где происходит работа с PictureBox.
     
  3. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    PHP:
    void bw__ProgressChanged(object senderProgressChangedEventArgs e)
            {
                try
                {
                    
    pictureBox1.Image = (Image)e.UserState;
                }
                catch (
    Exception er)
                {

                }
            }
     
  4. PaCo

    PaCo Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Потому как Expreition возникает не в твоем коде а в стандартном контроле, то есть ситуация такая - во время перетаскивания формы происходит отрисовка с вызовом LockBits при DrawImage в самом контроле, и в то же время очень часто происходит смена изображения в твоем коде, также с вызовом DrawImage + LockBits который не успевает вызвать UnlockBits до того как контрол пытается вызвать прорисовку и как следствие Bitmap region is already locked.
     
    1 person likes this.
  5. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    И как это исправить ? :confused:
     
  6. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    значит как-то не правильно рисуешь , через какое событие перерисововаешь? или в форе?
     
  7. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Я создаю отдельный BitMap и рисую в нем потом присваиваю picterBox.


    Пробивал просто рисовать в Bitmap и не присваивать picterBox , то все хорошо, ошибки нету.
     
    #7 ShkiperLol, 21 Feb 2011
    Last edited: 21 Feb 2011
  8. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    переписывай базовый ктонтрол :3 зачем ты "очень часто передвигаешь форму в разные стороны"? о_О
     
    2 people like this.
  9. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    хм... кодом можно ?

    Не то что часто, а быстро с одной стороны в другую , то сразу ерор :mad:
     
  10. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Совета адекватного не получишь, пока сорцы не выложишь!