Вверх ↑
Ответов: 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