Вниз
Скачать: CL | DM;

Рисующий Thread   Найти похожие ветки 

← →
А. Тимофеев   (2002-08-02 09:44) [0]

Привет.

Есть DLL в которой реализван объект TMyObj с функцией funcPaint, рисующей графику на заданный HDC.
Для работы с этим объектом сначала вызывается функция инициализации funcInit, которая возвращает номер NN этого объекта в потоковом TThreаdList.
Далее приложение обращается к каждому объекту TMyObj по этому номеру

например, для вызова перерисовки: funcPaint(NN, HDC)

При создании нескольких объектов TObj в отдельных потоках (создается поток, в потоке окно и экземпляр TObj, который рисует в это окно) функция funcPaint падает.
Но если использовать LockList перед вызовом funcPaint

function funcPaint(NN, HDC);
begin
with DllThreadList.LockList do
MyObj:= TMyObj(Items[NN-1]);
MyObjPaint(HDC);
DllThreadList.UnlockList;
end;

то так все работает без ошибок, но хочется сделать так:

function funcPaint(NN, HDC);
begin
with DllThreadList.LockList do
MyObj:= TMyObj(Items[NN-1]);
DllThreadList.UnlockList;
funcPaint(NN, HDC);
end;

но этот вариант работает всего несколько перерисовок, а затем валится. В чем может быть причина, глобальных переменных в DLL вроде нет.

Функция рисования самого TMyObj имеет такую структуру

procedure TMyObj.MyObjPaint(HDC);
var
Canvas: TCanvas;
begin
Canvas:= TCanvas.Create;
Canvas.Handle:= HDC;
try
вывод графики на Canvas
finally
Canvas.Free;
end;
end;

В чем может быть причина?


← →
MBo ©   (2002-08-02 09:48) [1]

Canvas.Lock не спасет?


← →
Zelius ©   (2002-08-02 10:38) [2]

У потока есть такой метод - Synchronize, почитай про него в Хелпе, может поможет... В демках с потоками он используется, можно там подсмотреть....



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
1-48129
Ильдар
2002-07-31 11:03
2002.08.15
Многострочный caption


3-48011
sia
2002-07-27 18:06
2002.08.15
подстолбцы в столбцах


7-48331
Mex
2002-05-30 18:08
2002.08.15
На Delphi PID процесса в WIn 2000


1-48064
НАИВый панк
2002-08-03 01:03
2002.08.15
как Дэлфи выделяет зарегистрированные слова (begin, end, function


7-48334
frost666
2002-06-03 11:16
2002.08.15
Как не запачкать реестр своими записями и притом...




   Наверх