Кто умеет сделать проверку доступности нескольких хостов, чтобы каждая из них была в своем потоке?
У меня получается либо проверки по очереди, либо возврат одного результата в каждом потоке.
Add(MainForm,2953706,441,287)
{
Width=847
Height=395
Position=1
}
Add(Button,1992062,441,364)
{
Left=10
Top=8
link(onClick,12916432:doEvent1,[])
}
Add(ChildPanelEx,12916432,532,364)
{
link(Str,6495371:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,14976254,21,21)
{
WorkCount=#8:doEvent1|
EventCount=#8:onEvent2|
DataCount=#3:Str|
Width=538
Height=277
link(doEvent1,5800145:doSplit,[(77,27)(77,97)])
}
Add(Panel,9422723,119,189)
{
Left=20
Top=42
Width=594
Height=298
Ctl3D=0
WinStyle=3
BevelInner=0
}
Add(ChildPanelEx,508446,301,91)
{
Mode=1
link(onClick,5520121:doDeferredEvent,[])
link(onEvent2,4485953:doWork1,[(368,104)])
link(Text,508446:##handle,[(307,79)(266,79)(266,138)(307,138)])
link(Name,5800145:FString,[(314,71)(256,71)(256,138)(139,138)])
}
BEGIN_SDK
Add(EditMultiEx,15604556,21,21)
{
WorkCount=#5:##Add|9:##hdelete|
EventCount=#7:onClick|8:onEvent2|
VarCount=#8:##handle|
DataCount=#4:Text|4:Name|
Width=580
Height=431
Point(##Add)
Point(##hdelete)
Point(##handle)
link(##Add,11521755:doStart,[(67,27)(67,118)])
}
Add(Panel,13984668,91,266)
{
Left=35
Top=105
Width=287
Height=29
Layout="parent.01"
Point(Handle)
Point(onMouseMove)
Point(doVisible)
link(onMouseMove,5714796:doMove,[(135,279)(135,322)(76,322)(76,356)])
}
Add(MoveWindow,5714796,91,350)
{
link(Handle,13984668:Handle,[])
}
Add(XiButton,7042504,280,203)
{
Left=264
Top=7
Width=14
Height=14
Caption="Х"
Data=Integer(0)
ColorScheme=4
link(onClick,15209075:doEvent1,[])
}
Add(Label,12515295,385,112)
{
Left=158
Top=8
Width=102
Caption=""
AutoSize=1
Alignment=1
link(Text,15604556:Text,[(391,32)(391,32)(27,32)])
}
Add(DoData,15915908,385,168)
{
link(onEventData,15604556:onClick,[(457,174)(457,27)])
link(Data,12515295:Caption,[(391,159)(391,159)])
}
Add(Hub,14763324,294,112)
{
InCount=2
OutCount=3
link(onEvent1,12515295:doText,[])
link(onEvent2,13476824:doText,[])
link(onEvent3,382628:doProcessMessages,[(318,132)(318,167)])
}
Add(Label,13476824,329,119)
{
Left=8
Top=8
Caption=""
}
Add(Hub,15209075,343,203)
{
link(onEvent1,15915908:doData,[(371,209)(371,174)])
link(onEvent2,15604556:onEvent2,[(549,216)(549,34)])
}
Add(Ping,10509512,182,112)
{
Name=""
link(onFind,14763324:doEvent1,[])
link(onFailed,15246370:doData,[])
link(Name,15604556:Name,[(188,66)(34,66)])
}
Add(DoData,15246370,238,119)
{
Data=String(Ошибка)
link(onEventData,14763324:doEvent2,[])
}
Add(Application,382628,329,161)
{
}
Add(Thread,11521755,105,112)
{
Delay=10
FastStop=0
link(onExec,10509512:doPing,[])
}
END_SDK
Add(DeferredEvent,5520121,385,91)
{
InData=0
link(onDeferredEvent,508446:##hdelete,[(436,97)(436,148)(289,148)(289,104)])
}
Add(GridLayout,4359765,406,196)
{
Name="01"
Rows=10
Cols=2
}
Add(Hub,7435655,203,91)
{
OutCount=3
link(onEvent1,508446:##Add,[])
link(onEvent2,4485953:doWork2,[(242,104)(242,202)])
}
Add(MultiElementEx,5800145,133,91)
{
link(onFString,7435655:doEvent1,[])
link(Str,14976254:Str,[(139,56)(27,56)])
}
BEGIN_SDK
Add(EditMultiEx,10238935,21,21)
{
WorkCount=#7:doSplit|
EventCount=#9:onFString|
VarCount=#7:FString|
DataCount=#3:Str|
Width=209
Height=186
link(doSplit,2325570:doSplit,[(35,27)(35,55)])
link(FString,3106599:FString,[(27,189)(55,189)])
}
Add(MultiStrPart,2325570,49,49)
{
Char="."
Count=4
link(onSplit,14010158:doFor,[])
link(Str,10238935:Str,[(55,35)(27,35)])
}
Add(For,14010158,140,49)
{
End=15
IncludeEnd=1
link(onEvent,3106599:doString,[(184,55)(184,101)(37,101)(37,146)])
link(Start,2325570:Part4,[(146,37)(111,37)(111,93)(76,93)])
}
Add(FormatStr,3106599,49,140)
{
DataCount=4
Mask="%1.%2.%3.%4"
Point(FString)
link(onFString,10238935:onFString,[(201,146)(201,27)])
link(Str1,2325570:Part1,[(55,128)(55,128)])
link(Str2,2325570:Part2,[])
link(Str3,2325570:Part3,[])
link(Str4,14010158:Position,[(76,110)(146,110)])
}
END_SDK
Add(HubEx,4485953,364,196)
{
link(onEvent,4359765:doResize,[])
}
END_SDK
Add(Edit,6495371,532,287)
{
Left=71
Top=7
Width=114
Text="192.168.137.1"
}