![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
У меня вопрос, делал синхронизацию(synchronize) при работе с Label и memo из потока, но все равно баги были страшные пришлось убрать, с чем могло быть связанно? не из за того что в этот момент могла быть работа из основного кода с этим же memo?
|
|
#2
|
|||
|
|||
|
сомнительно, этот метод как раз и предназначен для того, что бы основной поток и дополнительный не мешались. Вообще, для синхронизации преднвзначен объект TCriticalSection.
|
|
#3
|
||||
|
||||
|
показал бы "не правильно работающий код" с Synchronize?
|
|
#4
|
||||
|
||||
|
Код:
addmesseg:='(' + DateTimeToStr(Now()) + ') '+'отправлен запрос в плагин=> '+ UIN;
Memo2.Lines.Add(addmesseg);
writeln(logfile1,addmesseg);
inc(statistik1);
Label1.Caption:=IntToStr(statistik1);
@plugExec := GetProcAddress(PPluginInfo(listKomand.Items[n1])^.handle,'PluginExec');
Result:=PlugExec(UIN, Msg,PPluginInfo(listKomand.Items[n1])^.Index);
i:=random(10);
case i of
0: ;
1: Result:=Result+#10#13+rekl1.text;
2: Result:=Result+#10#13+rekl2.text;
3: Result:=Result+#10#13+rekl3.text;
4: Result:=Result+#10#13+rekl4.text;
5: Result:=Result+#10#13+rekl5.text;
6: Result:=Result+#10#13+rekl6.text;
7: Result:=Result+#10#13+rekl7.text;
8: Result:=Result+#10#13+rekl8.text;
9: Result:=Result+#10#13+rekl9.text;
end;
form1.MessageSend(UIN,Result,nomer);ну и в программе этот поток ежесекундно раз по 3-5 вызывался изначально все было нормально, через минут 5 потом "началось" |
|
#5
|
||||
|
||||
|
а если оставить только это:
Код:
var
addmesseg: String;
begin
addmesseg:='(' + DateTimeToStr(Now()) + ') '+'отправлен запрос в плагин=> 100';
Memo2.Lines.Add(addmesseg);
// writeln(logfile1,addmesseg);
// inc(statistik1);
Label1.Caption:=IntToStr(99);
end; |
|
#6
|
||||
|
||||
|
не знаю, такое не могу протестировать с той нагрузкой с которой должно работать.
|