2017-12-08 23 views
-1

一連のタスクを実行するVBコンソールアプリケーションを作成しました。スケジュールに基づいて実行するようにWindowsタスクスケジューラで設定する予定です。私はそのタスクを完了すると30秒後にexeを終了したいと思います。私はそれが閉じる前に何かを押す必要がある "Console.readline()"に慣れています。あなたは助けることができますか?指定時間後にVBコンソールアプリケーションを閉じる方法

Sub Main() 
    If Directory.Exists(MyPath) Then 
     RenameAll(MyPath) 
     Console.WriteLine(vbCrLf + vbCrLf + "Press ENTER to exit...") 
     Console.ReadLine() 
    Else 
     Console.WriteLine(vbCrLf + "Path is invalid") 
     Console.WriteLine(vbCrLf + vbCrLf + "Press ENTER to exit...") 
     Console.ReadLine() 
    End If 
End Sub 
+0

と行を交換したい場合は、ユーザーが「入力」を押して閉じることができるようにしたいですか30秒前には? – jmcilhinney

+0

タスクスケジューラから実行している場合は、出力が不要で、このコードを約4行に減らすことができます。タスクスケジューラは、画面出力を読み取ることはなく、パスが有効かどうかを認識せず、Enterキーを押して終了することもできません。なぜタスクスケジューラがそれを実行している場合、30秒を遅らせる必要がありますか?あなたが解決しようとしている真の問題は何ですか? –

+0

実際に私は 'Console.ReadLine()'を削除したい、私はちょうど30秒後にコンソールアプリケーションを終了したい。タスクスケジューラでexeを毎日設定する予定です。コンソールアプリケーションが自動終了しない場合は、画面にコンソールアプリケーションが多数開かれます。それは意味がありますか? – MGM

答えて

2

あなたは...これで

Console.WriteLine(vbCrLf + vbCrLf + "Press ENTER to exit...") 
Console.ReadLine() 

をあなたの行を置き換えることができます。

Dim sw As New Diagnostics.Stopwatch 
sw.Start() 
Console.WriteLine("This console window will close in 30 seconds") 
Console.WriteLine("Or press any key") 
Do 
Loop Until sw.ElapsedMilliseconds >= 30000 Or console.KeyAvailable 

これはストップウォッチを作成し、経過ミリ秒数> = 30000またはユーザのいずれかのキーを押すまでループし続けます。

また

、あなただけのコンソールは、ユーザーの操作なしで30秒間開いたまま

Threading.Thread.Sleep(30000) 
関連する問題