Вверх ↑
Ответов: 655
Рейтинг: 18
#1: 2017-04-21 16:28:48 ЛС | профиль | цитата
Netspirit писал(а):
Сделать это можно так. Специальный паралельный поток шлет одну команду затем сбрасывает событие (компонент Events) и останавливается на ожидание его срабатывания (компонент WaitObject). Событие onReceive выполняет необходимую обработку ответа, а затем сигналит то же событие Events, позволяя отправляющему потоку продолжить исполнение и отправить следующую команду.



Add(MainForm,2953706,21,105)
{
Width=227
Height=146
link(onCreate,9501545:doEvent1,[])
}
Add(TCPClient,14910645,399,189)
{
IP="127.0.0.1"
Port=8080
AsyncEvents=1
link(onReceive,2593203:In,[])
link(Data,14996723:Count,[(405,177)(489,177)(489,230)(349,230)])
}
Add(Thread,13878513,105,336)
{
link(onExec,14008871:doCompare,[])
}
Add(Events,13595715,301,287)
{
}
Add(WaitObject,1611665,301,350)
{
link(onWait,9346844:doOn,[(347,356)(347,392)(149,392)(149,300)])
link(ObjHandle,13595715:ObjHandle,[])
}
Add(TCPServer,3451293,336,112)
{
Port=8080
AsyncEvents=1
link(onReceive,9299417:doEvent1,[])
link(ClientID,3451293:CurClientID,[(349,100)(378,100)(378,152)(349,152)])
}
Add(Hub,9501545,70,119)
{
OutCount=5
link(onEvent1,3451293:doStartServer,[])
link(onEvent2,14910645:doConnect,[(249,132)(249,209)])
link(onEvent3,13595715:doCreate,[(243,139)(243,293)])
link(onEvent4,9346844:doSwitch,[(103,146)(103,286)])
link(onEvent5,13878513:doStart,[(94,153)(94,342)])
}
Add(If_else,14008871,161,336)
{
Op2=Integer(1)
link(onTrue,16332363:doEvent1,[])
link(Op1,9346844:State,[])
}
Add(Hub,16332363,210,336)
{
OutCount=4
link(onEvent1,9346844:doReset,[(235,342)(235,275)(149,275)(149,293)])
link(onEvent2,13595715:doSet,[(246,349)(246,300)])
link(onEvent3,1611665:doWait,[])
link(onEvent4,13466587:In,[])
}
Add(LineBreak,3300379,252,301)
{
Caption="rst"
link(Out,13595715:doReset,[])
Primary=[2593203,203,-112]
}
Add(Switch,9346844,161,280)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(doOn)
Point(State)
}
Add(LineBreak,3708233,287,189)
{
Caption="send"
link(Out,14996723:doNext,[])
Primary=[13466587,-42,168]
}
Add(CounterEx,14996723,343,189)
{
Max=1000
link(onNext,14910645:doSend,[])
}
Add(Hub,9299417,385,112)
{
link(onEvent1,9086780:doText,[])
link(onEvent2,3451293:doSend,[(418,125)(418,85)(324,85)(324,118)])
}
Add(Label,9086780,427,112)
{
Left=35
Top=20
}

Типа такого?
п.с. а Events можно использовать с паралельным потоком?
карма: 0

0