Jump to content
Sign in to follow this  
cwakefield

Run Not Closing Stream

Recommended Posts

cwakefield

As part of an application I am writing, I need to find all files matching a criteria on a computer. Based on examples I found, once the Run command is complete, the loop should exit, however I found that the loop would run indefinitely.

I ended up adding some timer logic, to automatically exit the loop if 5 seconds passed.

Does anyone know why my loop will not exit automatically when the Run function finishes?

$StartTime = TimerInit()
$Config_File_Path = Run(@ComSpec & " /c dir /s /b application.config", "C:\", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
$line = StdoutRead($Config_File_Path)
ConsoleWrite($line)
If @error <> 0 Then ExitLoop
If TimerDiff($StartTime) > 5000 Then ExitLoop
Wend

Share this post


Link to post
Share on other sites
JohnOne

$StartTime = TimerInit()
$Config_File_Path = Run(@ComSpec & " /c dir /s /b application.config", "C:\", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While ProcessExists($Config_File_Path)
    $line = StdoutRead($Config_File_Path)
    ConsoleWrite($line)
    If @error <> 0 Then ExitLoop
    If TimerDiff($StartTime) > 5000 Then ExitLoop
Wend


AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites
BrewManNH

Using your original script I fixed it for you. The ConsoleWrite was causing the @Error check to never work the way you wanted it to.

$StartTime = TimerInit()
$Config_File_Path = Run(@ComSpec & " /c dir /s /b application.config", "C:\", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
     $line = StdoutRead($Config_File_Path)
     If @error <> 0 Then ExitLoop
     ConsoleWrite($line)
     If TimerDiff($StartTime) > 5000 Then ExitLoop
WEnd

You have to check @error immediately after the function that might cause the error, ConsoleWrite will reset the @error causing it to always be 0 by the time you checked it.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×