Вверх ↑
Ответов: 39
Рейтинг: 0
#1: 2021-02-10 20:14:18 ЛС | профиль | цитата
Netspirit писал(а):
Там всё работает правильно. Просто запрещено грубо прерывать поток исполнения. Дай себе ответ зачем прерывать работу потока, а потом поищи другой способ решения (без прерывания).

Освобождением ресурсов занимается тот, кто их выделил, в данном случае - участвующие компоненты. В случае прерваного потока - кроме занятых ресурсов нарушается внутреннее состояние компонента: в начале работы компонент читает входящие данные, подготавливает их к работе, в процессе работы меняет временные переменные. После выполнения задачи - приводит состояние этих переменных в начальное, освобождает системные ресурсы, чего не происходит в случае обрыва исполнения.

MBO писал(а):
что бы без потока работал как старый http_get?
Вот, в HTTP_Get не делаешь остановки потока (там поток есть внутри)? Вот и здесь не делай и всё будет работать. Тупо сбрось связь с Thread.doStop и поставь Thread.BusyEvent=Ignore.

Редактировалось 3 раз(а), последний 2021-02-10 14:16:23


Понял.
В общем я сделал так:

Add(MultiElement,3230401,567,266)
{
@Color=11163135
}
BEGIN_SDK
Add(EditMulti,15339671,21,21)
{
EventCount=2
WorkCount=1
DataCount=5
Width=930
Height=781
link(doWork1,7227391:doCompare,[(42,27)(42,538)])
}
Add(MultiElement,10603034,357,476)
{
link(Data1,15339671:Data2,[(363,248)(34,248)])
}
BEGIN_SDK
Add(EditMulti,3772229,21,21)
{
WorkCount=1
DataCount=1
VarCount=3
Width=783
Height=494
link(doWork1,13160684:doSplit,[(53,27)(53,146)])
link(Var1,2851825:Value,[(27,361)(594,361)])
link(Var2,3549405:Value,[(34,361)(671,361)])
link(Var3,1994398:Value,[(41,361)(727,361)])
}
Add(MultiStrPart,13160684,84,140)
{
Char="@"
Point(onNotFound)
link(onSplit,2874390:doEvent1,[(149,146)])
link(Str,4332754:Var2,[])
link(onNotFound,892182:doEvent1,[(124,153)(124,265)])
}
Add(Memory,2851825,588,175)
{
}
Add(Memory,3549405,665,175)
{
}
Add(Memory,1994398,721,175)
{
}
Add(Hub,892182,147,259)
{
OutCount=3
link(onEvent1,7826930:doData,[])
link(onEvent2,3549405:doClear,[(392,272)(392,188)])
link(onEvent3,1994398:doClear,[(420,279)(420,188)])
}
Add(DoData,7826930,182,259)
{
link(onEventData,10978073:doEvent1,[(380,265)(380,181)])
link(Data,4332754:Var3,[(188,103)])
}
Add(GetDataEx,4332754,84,98)
{
Angle=3
link(Data,3772229:Data1,[(27,103)])
}
Add(Hub,2874390,147,119)
{
link(onEvent1,6803681:doData,[])
link(onEvent2,3449222:doSplit,[(193,132)(193,167)])
}
Add(DoData,6803681,196,119)
{
link(onEventData,10978073:doEvent2,[(390,125)(390,188)])
link(Data,13160684:Part1,[(202,107)(146,107)(146,184)(90,184)])
}
Add(Hub,10978073,553,175)
{
InCount=2
link(onEvent1,2851825:doValue,[])
}
Add(MultiStrPart,3449222,224,161)
{
Char=":"
Point(onNotFound)
link(onSplit,5683787:doEvent1,[])
link(Str,13160684:Part2,[(230,149)(164,149)(164,184)(97,184)])
}
Add(Hub,5683787,266,161)
{
link(onEvent1,5785945:doData,[(287,167)(287,146)])
link(onEvent2,10110114:doData,[(290,174)(290,188)])
}
Add(DoData,5785945,294,140)
{
link(onEventData,3549405:doValue,[(496,146)(496,181)])
link(Data,3449222:Part1,[(300,128)(265,128)(265,205)(230,205)])
}
Add(DoData,10110114,301,182)
{
link(onEventData,1994398:doValue,[(527,188)(527,181)])
link(Data,3449222:Part2,[(307,170)(272,170)(272,205)(237,205)])
}
END_SDK
Add(HTTPClient,15281445,469,630)
{
Method=1
EncType=1
SendTimeout=0
RecvTimeout=0
Point(Proxy)
Point(ProxyUser)
Point(ProxyPass)
Point(onAuthProxy)
Point(doUserAgent)
Point(PostData)
Point(onStateChange)
link(URL,15339671:Data1,[(475,326)(27,326)])
link(FileName,7399373:Var3,[(482,89)])
link(onFinish,11854635:doEvent1,[])
link(Proxy,10603034:Var1,[(489,569)(363,569)])
link(ProxyUser,10603034:Var2,[(496,569)(370,569)])
link(ProxyPass,10603034:Var3,[(503,569)(377,569)])
link(PostData,12861955:Var2,[])
}
Add(Hub,3606552,294,511)
{
InCount=2
OutCount=9
link(onEvent1,2566564:doWork1,[(476,517)(476,482)])
link(onEvent3,15281445:doAbort,[(371,531)(371,678)(458,678)(458,650)])
link(onEvent4,10603034:doWork1,[(332,538)(332,482)])
link(onEvent5,12973578:doCompare,[(354,545)(354,524)])
link(onEvent8,8951318:doStart,[(320,566)(320,594)(275,594)(275,622)])
link(onEvent9,9202351:doTimer,[(224,573)(224,657)])
}
Add(DoData,2126026,483,483)
{
link(onEventData,15281445:doUserAgent,[(523,489)(523,657)])
link(Data,3545356:Value,[(489,457)(552,457)])
}
Add(If_else,12973578,399,518)
{
link(onTrue,2126026:doData,[(457,524)(457,489)])
link(onFalse,13679769:doData,[(457,531)(457,538)])
link(Op1,5964060:Var2,[])
link(Op2,2001601:Value,[(412,496)(433,496)])
}
Add(GetDataEx,5964060,399,427)
{
link(Data,15339671:Data3,[(405,270)(41,270)])
}
Add(DoData,13679769,483,532)
{
link(Data,5964060:Var3,[(489,432)])
}
Add(Memory,2001601,427,441)
{
Default=String()
}
Add(Memory,3545356,546,399)
{
Default=String(Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0)
}
Add(Thread,8951318,287,616)
{
Delay=200
FastStop=0
Point(doStopFlag)
link(onExec,6565431:doCompare,[])
}
Add(Hub,11854635,595,637)
{
OutCount=4
link(onEvent1,15339671:onEvent1,[(729,643)(729,27)])
link(onEvent2,9202351:doStop,[(621,650)(621,657)(226,657)(226,664)])
link(onEvent3,16554511:doEvent2,[(621,657)(621,580)(590,580)(590,503)])
}
Add(Memory,14893065,686,476)
{
Default=String(1)
}
Add(ChanelToIndex,2566564,644,476)
{
link(onIndex,14893065:doValue,[])
}
Add(If_else,7227391,63,532)
{
link(onTrue,11698479:doCompare,[])
link(Op1,15281892:Var1,[(69,520)])
link(Op2,3219965:Var1,[(76,460)])
}
Add(Memory,9893737,112,357)
{
Default=String(1)
}
Add(Timer,9202351,231,651)
{
Interval=10000
Enable=1
AutoStop=1
link(onTimer,16554511:doEvent1,[(478,657)(478,496)])
}
Add(Hub,16554511,602,490)
{
InCount=2
link(onEvent1,2566564:doWork2,[(630,496)(630,489)])
}
Add(GetDataEx,12861955,504,609)
{
link(Data,15339671:Data4,[(510,326)(48,326)])
}
Add(If_else,11698479,112,532)
{
link(onFalse,3606552:doEvent1,[(219,545)(219,517)])
link(Op1,16153412:Var1,[(118,513)(268,513)(268,660)])
link(Op2,3219965:Var3,[(125,460)])
}
Add(GetDataEx,3219965,112,455)
{
link(Data,9893737:Value,[])
}
Add(If_else,6565431,357,616)
{
link(onTrue,15281445:doLoadString,[(429,622)(429,636)])
link(onFalse,15281445:doLoadFile,[(429,629)(429,643)])
link(Op1,7399373:Var2,[(363,318)(55,318)])
link(Op2,14123805:Value,[(370,390)(398,390)])
}
Add(GetDataEx,7399373,49,84)
{
link(Data,15339671:Data5,[])
}
Add(Memory,14123805,392,133)
{
}
Add(FormatStr,5964964,322,693)
{
DataCount=3
Mask="Переменная %1 (дб 1) Поток %2 (дб 0) ХТТП Статус %3"
link(onFString,15339671:onEvent2,[(652,699)(652,34)])
link(Str1,15281892:Var2,[(328,609)(692,609)])
link(Str2,16153412:Var3,[(335,660)])
link(Str3,15281445:Status,[(342,684)(475,684)])
}
Add(Timer,7780620,266,700)
{
Interval=1
link(onTimer,5964964:doString,[(310,706)(310,699)])
}
Add(GetDataEx,15281892,686,515)
{
link(Data,14893065:Value,[])
}
Add(GetDataEx,16153412,287,655)
{
link(Data,8951318:Busy,[])
}
END_SDK


верно?

Или http запрос тоже лучше не прерывать?
карма: 0

0