Ошибка "Canvas does not allow drawing"

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by bertys, 8 Oct 2012.

  1. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Почему выбивает ошибку

    в строке:
    PHP:
    var
    CS:TcriticalSection;
    begin
    ...
    CS.Leave; {<--вот тут ошибку выдает}
    ...

    Скрин ошибки:
    [​IMG]
     
  2. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    В левом потоке используешь данные главного потока(форму, компоненты и т.д.)
     
  3. muip

    muip New Member

    Joined:
    1 Sep 2011
    Messages:
    45
    Likes Received:
    4
    Reputations:
    0
    если перевести эту ошибку, можно предположить, что у тебя в потоке где-то есть showmessage или что-то подобное.
     
  4. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    есть вот такое

    PHP:
     var
       
    Accounts:Tstringlist;
      
    CS1:TcriticalSection;
     ...
     
    CS1.Enter;
     
    begin
     form1
    .Memo1.Lines.Add('bla bla bla'); 
     
    Accounts.Add('bla bla bla');
     
    form1.Label3.Caption:=inttostr(form1.memo1.Lines.Count);
     
    end;
     
    CS1.Leave;
    ...
    Чтоб так и было испоьзовать Synchronize, или можно как то по другому сделать, но чтоб так же выводило в мемо и в лабел и скорость не упала
     
  5. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Что-то мне подсказывает что ты Critical Section используешь в потоках? Не ?

    А то в потоках так-то нежелательно иметь взаимодействие с графическими объектами формы напрямую.
     
    _________________________
  6. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    form1.Memo1.Lines.Add('bla bla bla');

    Взаимодействие с формой только через Synchronize !!!
     
    _________________________