' ctrlcevent.vb Imports System Imports System.IO Imports System.Text ' 簡単なログ・クラス Public Class MyLogger Dim log As New StringBuilder() ' ログの追加 Public Sub Add(ByVal line As String) log.AppendLine(line) End Sub ' ログの保存(ログ・ファイルの名前は「yyyymmdd.txtの」形式) Public Sub Save() Dim file As String = DateTime.Now.ToString("yyyyMMdd") + ".txt" Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS") ' 追加書き込み(文字コードはShift-JISを使用) Using sw As New StreamWriter(file, True, enc) sw.Write(log.ToString()) End Using End Sub End Class Class MyProgram Dim logger As New MyLogger() Sub New() ' CancelKeyPressイベント・ハンドラの追加 AddHandler Console.CancelKeyPress, AddressOf Ctrl_C_Pressed End Sub Sub Run() While True Dim line As String = DateTime.Now + " 出力" Console.WriteLine(line) logger.Add(line) ' ログの追加 System.Threading.Thread.Sleep(2000) ' 2秒間待つ End While End Sub ' [Ctrl]+[C]キーが押されたときに呼び出される Sub Ctrl_C_Pressed(ByVal sender As Object, ByVal e As ConsoleCancelEventArgs) logger.Save() ' ログの保存 End Sub Shared Sub Main() Dim p As New MyProgram() p.Run() End Sub End Class ' コンパイル方法:vbc ctrlcevent.vb