Deutsch

How To: Anhalten von Avenue-Code, während system.execute() ausgeführt wird

Zusammenfassung

Hinweis:
Die Informationen in diesem Artikel gelten nur für die ArcView GIS-Versionen 3.x. Die folgenden Anweisungen gelten für die Programmiersprache Avenue, die speziell für die ArcView GIS-Anwendung verwendet wird.

Die Informationen sind die Anweisungen zum Anhalten einer Avenue-Anwendung, während system.execute() einen anderen Prozess ausführt.

Vorgehensweise

  1. Starten Sie einen Texteditor wie Notepad oder WordPad.
  2. Kopieren Sie den folgenden Code in den Texteditor:
@ECHO OFF 
REM Example.bat
echo ------------------------------------------------- 
echo This portion of the program must: 
echo 1. Run an application or commands of your choice.
echo 2. Create the flag file when finished No. 1.
echo ------------------------------------------------- 
PAUSE 
REM Incser application or commands to run here:
ECHO FINISHED > C:\temp\FINISHED.TXT 
Hinweis:
Die Anwendung bzw. die Befehle werden ausgeführt, während die aufrufende Avenue-Anwendung angehalten ist.
  1. Speichern Sie die Datei unter "C:\temp\example.bat", und beenden Sie den Texteditor.
  2. Öffnen Sie ein neues Skriptfenster in ArcView.
    1. Aktivieren Sie das Projektfenster.
    2. Klicken Sie auf das Symbol "Skripte".
    3. Klicken Sie auf "Neu".
  3. Kopieren Sie diesen Code in das neue Fenster:
'-- Test_Flag
'-- Wait for an external process launched with
'-- System.Execute() to complete before continuing. 
'
'-- Calls: Example.bat 

'-- Check for the existence of the flag file.
'-- When found, remove the script that av.DelayedRun() is using.
_count = 0
theFlagFile = "c:\temp\finished.txt".AsFileName 
msgbox.info("Starting the test-for-flag-file" ++ _count.asstring,"") 
if (File.Exists(theFlagFile)) then 
 msgbox.info("Flag file found. Moving on...","") 
' av.run("MyScript_Part2","") 
else 
 _count = _count + 1 
 msgbox.info("File not found. Starting loop again" ++ _count.asstring,"") 
av.DelayedRun("test_flag",nil,5) 
end 
  1. Geben Sie dem Skript den Namen Test_Flag.
    1. Wählen Sie "Eigenschaften" im Menü "Skript" aus.
    2. Geben Sie im Feld "Name" einen neuen Namen ein.
    3. Klicken Sie auf "OK".
  2. Wählen Sie "Kompilieren" im Menü "Skript" aus.
  3. Öffnen Sie ein zweites Skriptfenster.
  4. Kopieren Sie diesen Code in das zweite Skriptfenster:
'-- MyScript_Part1
'-- This section should go at the top of your script.
'-- Check for the existence of the flag file and delete if needed. 
theFlagFile = "c:\temp\finished.txt".AsFileName 
msgbox.Info(File.Exists(theFlagFile).AsString,"Is the Flag File There?") 
if (File.Exists(theFlagFile)) then 
File.Delete(theFlagFile) 
end 

'-- Start your code here
For each i in 0..5
  myAnswer = MsgBox.YesNo( "Continue?", "ArcView", TRUE )
  If (myanswer = false) then
  '-- Create the flag file and run process
    System.Execute("c:\temp\example.bat") 
    break
  end
end

'-- Issue the Delayed.Run() request to loop and wait for the
'-- flag file to appear. If it appears, then finish,
'-- else, run av.delayed again from within the called script.
av.DelayedRun("test_flag",nil,5)
  1. Geben Sie diesem Skript den Namen MyScript_Part1.
Hinweis:
Die Avenue-Anwendung muss auf zwei Skripte verteilt werden. Es gibt keine Methode, mit der ein Avenue-Skript angehalten und später in der Mitte des Skripts fortgesetzt werden kann. 
  1. Wählen Sie "Kompilieren" im Menü "Skript" aus.
  2. Öffnen Sie ein drittes Skriptfenster.
  3. Kopieren Sie diesen Code in das neue Fenster.
'-- MyScript_Part2
MsgBox.info("Process Finished","")
'-- Continue code here. 
  1. Geben Sie diesem Skript den Namen MyScript_Part2.
  2. Öffnen Sie MyScript_Part1, und wählen Sie "Ausführen" im Menü "Skript" aus.

MyScript_Part1 löscht eine Flag-Datei, die nach einer vorherigen Ausführung noch übrig sein könnte. Danach wird der Anwendungscode ausgeführt. Wenn Sie den Punkt erreichen, an dem Sie die Anwendung anhalten müssen, das heißt, wenn Sie auf die Frage, ob fortgesetzt werden soll, mit "Ja" antworten, wird das Skript Flag_Test ausgeführt und die Datei Example.bat gestartet. Flag_Test wird als Endlosschleife ausgeführt, in der alle 5 Sekunden auf Existenz der Flag-Datei getestet wird. Wenn die Flag-Datei gefunden wird, führt das Skript den Rest der Anwendung aus, indem MyScript_Part2 gestartet wird.