Что нового

как сделать чтобы скрипт отвечал на запросы во время выполнения долгой функции..

Nislz

Новичок
Сообщения
11
Репутация
0
с моим инетом, функция _INetGetSource выполняется 10-60 сек. она работает все время. надо чтоб я мог хотя бы выйти из скрипта через GUI мгновенно и в любой момент, а не ждал пока выполнится функция.
 

sims

Осваивающий
Сообщения
184
Репутация
24
Это как раз тот случай, когда многопоточность простой выход из положения.
Достаточно выполнить _INetGetSource в потоке и если нужно прервать, то киляем поток.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Nislz [?]
надо чтоб я мог хотя бы выйти из скрипта через GUI мгновенно и в любой момен
для этого есть WM_COMMAND. смотри справку "функции пользователей" и примеры на форуме.
вот один из них
http://autoit-script.ru/index.php/topic,13426.msg85507.html#msg85507
 
Автор
N

Nislz

Новичок
Сообщения
11
Репутация
0
ничего не помогает. придется переходить на питон...
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Nislz, ну так в чем проблема то? переходи. можно перейти и на PureBasic
хотя.. покажи сам код и посмотрим что можно сделать
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>

Global $iInetRead_PID
Global $sInetRead_Str

$hGUI = GUICreate("_InetReadEx", 200, 100)

$iRead_Button = GUICtrlCreateButton("Read", 20, 20, 70, 20)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
	
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iRead_Button
			_InetReadEx('http://autoit-script.ru', 1)
	EndSwitch
	
	If $iInetRead_PID Then
		$sInetRead_Str &= StdoutRead($iInetRead_PID)
		
		If @error <> 0 Then
			$iInetRead_PID = 0
			ConsoleWrite($sInetRead_Str & @LF)
		EndIf
	EndIf
WEnd

Func _InetReadEx($sURL, $iInetReadOpt = 0, $iBinaryFlag = 4)
	Local $sScript = 'ConsoleWrite(BinaryToString(InetRead(''' & $sURL & ''', ' & $iInetReadOpt & '), ' & $iBinaryFlag & '))'
	$iInetRead_PID = Run(@AutoItExe & ' /AutoIt3ExecuteLine "' & $sScript & '"', '', @SW_SHOW, 2+4)
	$sInetRead_Str = ''
EndFunc
 
Верх