Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#46: 2010-08-22 02:37:04 ЛС | профиль | цитата
Хитрооо!! Действительно не удаляет.!
------------ Дoбавленo в 02.37:
Очень полезный разговор, Спасибо!
карма: 0

0
Ответов: 1841
Рейтинг: 369
#47: 2010-08-22 02:40:22 ЛС | профиль | цитата
хм, вот ещё один вопрос родился:
code_20148.txt

В приведённой выше схеме при нажатии на форму запускается новый поток который в свою очередь запускает таймер ну а таймер запускает Msg.
Но после первого нажатия на форме все последующие нажатия не вызывают Msg...

карма: 1
0
файлы: 1code_20148.txt [821B] [117]
Разработчик
Ответов: 26163
Рейтинг: 2127
#48: 2010-08-22 03:00:47 ЛС | профиль | цитата
CriDos, почитай наши предыдущие посты и все поймешь, почему не запускается второй раз
------------ Дoбавленo в 03.00:
nesco писал(а):
И удалить этот дополнительный поток никак не удается, только извне, принудительно. Или применив другой таймер


И дополнительный таймер не помогает, не останавливается дополнительный поток, хотя, событие на вщЫещз подается, так что, утверждение
nesco писал(а):
тут хз, что может произойти

правильно и
nesco писал(а):
Короче, так лучше не делать

карма: 22

0
Ответов: 1429
Рейтинг: 50
#49: 2010-08-22 03:00:49 ЛС | профиль | цитата
nesco, Похоже я тоже не могу понять.
Вот так мигает бесконечно, пока второй раз на форму не нажмеш. LoopMessage заставляет таймер работать.

code_20149.txt
карма: 0

0
файлы: 1code_20149.txt [769B] [149]
Гость
Ответов: 17029
Рейтинг: 0
#50: 2010-08-22 03:03:06 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-04 06:22:50
карма: 0

0
Ответов: 1429
Рейтинг: 50
#51: 2010-08-22 03:04:08 ЛС | профиль | цитата
то-есть таймер то работает, но мы этого не видим без LoopMessage. Или таймер не работает, но LoopMessage его просто постоянно перезапускает.
Коварный этот LoopMessage...
карма: 0

0
Ответов: 1841
Рейтинг: 369
#52: 2010-08-22 03:04:26 ЛС | профиль | цитата
[offtop]user-19.81.118.217.in-add - был я...[/offtop]
карма: 1
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#53: 2010-08-22 03:07:39 ЛС | профиль | цитата
CriDos, все правильно, ты уничтожаешь таймер и создаешь следующий раз новый, похоже, что это самый правильный вариант. И только в таком случае это будет работать, тк запущенный таймер начисто блокирует поток
карма: 22

0
Ответов: 1841
Рейтинг: 369
#54: 2010-08-22 03:12:46 ЛС | профиль | цитата
nesco, вот тоже интересный вариант без мультика.
code_20151.txt
------------ Дoбавленo в 03.12:
хм, даже с таким вариантом и прокручивать события не нужно...
пример:

Add(MainForm,4653567,261,84)
{
Width=579
Height=422
Caption="Нажми на меня"
Position=1
Point(onMouseDown)
link(onMouseDown,1689973:doStart,[])
}
Add(Thread,1689973,316,105)
{
Delay=100
FastStop=0
BusyEvent=1
link(onExec,14833638:doEvent,[])
}
Add(Timer,1850261,399,105)
{
Interval=0
AutoStop=1
link(onTimer,2628346:doEvent,[])
}
Add(Debug,14833638,364,105)
{
WEName="DWEP1"
VDName="DVDP1"
link(onEvent,1850261:doTimer,[])
}
Add(LED,13681910,476,105)
{
Left=430
Top=185
}
Add(Debug,2628346,448,105)
{
link(onEvent,13681910:doChangeValue,[])
}
карма: 1
0
файлы: 1code_20151.txt [813B] [144]
Разработчик
Ответов: 26163
Рейтинг: 2127
#55: 2010-08-22 03:31:47 ЛС | профиль | цитата
CriDos писал(а):
хм, даже с таким вариантом и прокручивать события не нужно...

Ты запускаешь таймер в главном потоке при старте схемы, в дополнительном таймер просто перезапускается
карма: 22

0
Ответов: 1429
Рейтинг: 50
#56: 2010-08-23 06:15:48 ЛС | профиль | цитата
Эх ребята...

Вы тут говорили, только о том, что Self Destruction вызывается когда что-то (поток или мультик) пытается завершить сам себя.
Но когда я беру "кнопку", подключаю ее прямо к точке ##Clear, нажимаю и получаю Self Destruction, закрываю, опять нажимаю(кнопку!!) и снова получаю, то это означает только одно - полный пипец.
Поток внутри мультика продолжает работать.

Внутри стоит POP3, который забирает письмо. И если в этот момент ему "на ходу отключить инет", он оказывается в таком положении, из которого любые действия с ним приводят только Self Destruction. (включая ручные)
------------ Дoбавленo в 06.15:
Схему эту я уже в отдельной теме приводил.
Вот она:

Add(MainForm,2953706,49,126)
{
Width=643
Height=365
}
Add(MultiElementEx,732297,616,336)
{
Mode=1
link(onNext,16525535:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,14524302,21,21)
{
WorkCount=#8:doEvent1|6:doData|6:doStop|5:##Add|7:##Clear|8:##delete|7:doTimer|
EventCount=#8:onEvent1|8:onEvent2|8:onEvent3|8:onEvent4|8:onEvent5|9:onEvent11|9:onEvent21|6:onTrue|6:onNext|
DataCount=#6:Server|5:Login|8:Password|4:Data|
Width=853
Height=487
Point(##Add)
Point(##Clear)
Point(##delete)
link(doEvent1,14620630:doEvent1,[(81,27)(81,97)])
link(doData,6692937:doData,[(157,34)(157,342)])
link(doStop,6249774:doStop,[(109,41)(109,111)])
}
Add(Hub,14620630,140,91)
{
OutCount=3
link(onEvent1,14524302:onEvent1,[(514,97)(514,27)])
link(onEvent2,6249774:doStart,[])
link(onEvent3,14388428:doTimer,[(301,111)(301,342)])
}
Add(Hub,8843929,574,231)
{
OutCount=5
link(onEvent1,1697604:doWork3,[(600,237)(600,218)(494,218)])
link(onEvent2,14524302:onEvent2,[(731,244)(731,34)])
link(onEvent3,14524302:onEvent3,[(731,251)(731,41)])
link(onEvent4,14524302:onEvent4,[(600,258)(600,153)(309,153)(309,48)])
link(onEvent5,14524302:onEvent5,[(731,265)(731,55)])
}
Add(InfoTip,16136873,49,49)
{
@Color=14215660
Info=#13:Чтение с mail|
Width=764
Height=361
}
Add(POP3,4600154,385,154)
{
Point(doTop)
Point(onError)
Point(doPort)
link(onRead,5564472:doParse,[])
link(Server,14524302:Server,[(391,88)(27,88)])
link(Login,14524302:Login,[(398,88)(34,88)])
link(Password,14524302:Password,[(405,88)(41,88)])
link(onError,11688575:doEvent1,[(446,174)(446,97)])
}
Add(Hub,10379878,259,140)
{
InCount=2
OutCount=3
link(onEvent1,6269490:doWork2,[(329,146)(329,160)])
link(onEvent2,8891662:doData,[(311,153)(311,195)])
link(onEvent3,16206586:doCompare,[(298,160)(298,237)])
}
Add(DoData,8891662,322,189)
{
link(onEventData,4600154:doRead,[(359,195)(359,167)])
link(Data,7527882:Var2,[])
}
Add(POP3_Parse,5564472,455,161)
{
link(onParse,224257:doValue,[])
}
Add(Memory,224257,581,161)
{
link(onData,89292:doData,[])
}
Add(FileStream,14014400,693,147)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,224257:Value,[(699,139)(671,139)(671,208)(587,208)])
}
Add(DoData,89292,630,161)
{
link(onEventData,14014400:doCopyFromStream,[])
link(Data,5564472:Attach,[(636,151)(516,151)(516,203)(482,203)])
}
Add(DoData,6692937,294,336)
{
link(onEventData,4600154:doPort,[(356,342)(356,195)])
link(Data,14524302:Data,[(300,178)(48,178)])
}
Add(GetDataEx,7527882,322,172)
{
Angle=1
link(Data,14130260:Var1,[(360,177)(360,204)])
}
Add(Hub,11688575,490,91)
{
OutCount=3
link(onEvent1,14524302:onEvent11,[(689,97)(689,62)])
link(onEvent2,14524302:onEvent21,[(689,104)(689,69)])
link(onEvent3,1697604:doWork2,[(516,111)(516,140)])
}
Add(HubEx,1697604,490,134)
{
Angle=2
link(onEvent,15559578:doWork1,[(377,140)])
}
Add(Thread,6249774,196,98)
{
Delay=10
FastStop=0
PColor(onExec,16777215)
link(onExec,10379878:doEvent1,[(244,104)(244,146)])
}
Add(If_else,16206586,462,231)
{
Op2=String(16234454584764512)
link(onTrue,8843929:doEvent1,[])
link(onFalse,6610559:doData,[(508,244)(508,299)(283,299)(283,258)])
link(Op1,5564472:Subject,[])
}
Add(DoData,6610559,294,252)
{
link(onEventData,15811089:doEvent1,[])
link(Data,14130260:Var2,[(300,230)(377,230)])
}
Add(GetDataEx,14130260,371,199)
{
Angle=1
link(Data,4600154:Count,[(391,204)])
}
Add(Hub,15811089,336,252)
{
OutCount=4
link(onEvent1,6269490:doWork3,[(390,258)(390,210)(347,210)])
link(onEvent3,15559578:doWork3,[(377,272)])
link(onEvent4,3432990:doCompare,[(362,279)(362,233)(177,233)(177,195)])
}
Add(HubEx,6269490,343,154)
{
link(onEvent,4600154:doConnect,[])
}
Add(HubEx,15559578,373,175)
{
link(onEvent,4600154:doClose,[])
}
Add(If_else,3432990,189,189)
{
Op2=Integer(0)
link(onTrue,14524302:onTrue,[(547,195)(547,76)])
link(onFalse,10379878:doEvent2,[(244,202)(244,153)])
link(Op1,7527882:Var1,[(195,177)])
}
Add(Timer,14388428,448,336)
{
Interval=50
Enable=1
link(onTimer,5560263:doNext,[])
}
Add(Counter,5560263,497,336)
{
link(onNext,14524302:onNext,[(701,342)(701,83)])
}
END_SDK
Add(Hub,5522613,483,294)
{
OutCount=7
PColor(onEvent1,11184810)
PColor(onEvent2,11184810)
PColor(onEvent3,11184810)
PColor(onEvent4,11184810)
PColor(onEvent5,11184810)
PColor(onEvent7,16777215)
link(onEvent5,732297:doTimer,[(557,328)(557,384)])
link(onEvent6,732297:##Add,[(563,335)(563,363)])
link(onEvent7,732297:doEvent1,[])
}
Add(Button,12191682,455,420)
{
Left=285
Top=165
Width=60
Caption="##Clear"
link(onClick,732297:##Clear,[(576,426)(576,370)])
}
Add(Button,11271433,420,294)
{
Left=285
Top=140
Caption="start"
link(onClick,5522613:doEvent1,[])
}
Add(Label,16525535,679,392)
{
Left=385
Top=155
}



Только чтоб увидеть глюк, надо ловить момент, и отрубать инет "на ходу" (в момент работы POP3).

карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#57: 2010-08-23 08:10:12 ЛС | профиль | цитата
login писал(а):
Только чтоб увидеть глюк, надо ловить момент, и отрубать инет "на ходу" (в момент работы POP3).

Оно и должно выводить, внутри же стоит поток, а пока поток работает, эта схема не может быть удалена из памяти
карма: 10
0
Ответов: 1841
Рейтинг: 369
#58: 2010-08-23 12:19:33 ЛС | профиль | цитата
login, вот пример где показано что при попытке удалить мультик с запущенным потоком приведёт к "Self Destruction"
code_20171.txt
карма: 1
0
файлы: 1code_20171.txt [1.2KB] [78]
Ответов: 1429
Рейтинг: 50
#59: 2010-08-23 14:17:45 ЛС | профиль | цитата
Вообще, я чуть учил ассемблер, и там можно было убивать, "что хош, когда хош". Я, по наивности, думал что везде можно так делать. И в максе, я мог прервать процесс - любой, который на меня "косо посмотрел". А вот тут болт.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#60: 2010-08-23 14:21:38 ЛС | профиль | цитата
CriDos писал(а):
что при попытке удалить мультик с запущенным потоком приведёт к "Self Destruction"

Млин, а остановить поток перед удалением мультика, видно, не судьба
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)