Показать сообщение отдельно
Старый 08.09.2011, 18:29   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Параллельные процессы отображения графических элементов? Многопоточная реализация задачи!

Конкретно данный код не проверял, но судя по тому, как реализован вызов процедур, могу сказать, что библиотека в принципе не обеспечивает многопоточности.

Попробуйте использовать Lib_multithread

Я пробовал такой код, он немного изменен по сравнению с Вашим, но принцип вроде бы тот же:

program threadtest;
uses multithread;

procedure p1;//первый поток
begin
 
while true do
 
begin
  setColor
(0,0,0);
  
drawText('I',0,0);
  
repaint;
  
delay(500);
  
setColor(0,255,255);
  
fillRect(0,0,GetWidth,14);
  
repaint;
  
delay(500);
 
end;
end;

procedure p2;//второй поток
begin
 
while true do
 
begin
 drawImage
(loadImage('/icon.png'), 0100);
 
repaint;
 
delay(2000);
 
//showCanvas;
 
setColor(255,255,255);
 
fillRect(0,100,240,20);
 
repaint;
 
delay(2000);
 
end;
end;

begin
  init
(1);//Инициализируем первый поток
  
init(2);//Инициализируем второй поток
  
start(1);//Запускаем первый поток
  
start(2);//Запускаем второй поток
  
delay(1000000);//Здесь может быть все, что угодно, это основной поток мидлета.
end
Для того, чтобы все сработало, нужно:
-обязательно добавить все 5 файлов T1.class...T5.class в ресурсы проекта, даже если потоков только два;
-имена процедур должны быть именно p1, p2...p5 и никакие другие (можно описать только те процедуры, которые нужны).
(Offline)
 
Ответить с цитированием