こんにちは!
‘——————————————————————————
‘Copyright (C) Imabari Shipbuilding Co. Ltd All rights reserved.
‘——————————————————————————
#Region “更新履歴”
‘**********************************************************************************************************/
‘———————————————————————————————————-
‘ 修正日 / 修正者 / Rev / 修正内容
‘———————————————————————————————————-
‘ 2025/05/21 / SIT柿木 / 23.1.0 / 新規作成(計849)
‘———————————————————————————————————-
‘**********************************************************************************************************/
#End Region
#Region “Imports”
Imports System.Configuration
Imports System.Text
Imports System.IO
Imports Microsoft.Office.Interop
#End Region
”’ <summary>
”’ アプリケーションエントリーポイントモジュール
”’ </summary>
”’ <remarks></remarks>
Module Module1
#Region “パブリックメソッド”
”’ <summary>
”’ アプリケーションエントリーポイント処理
”’ </summary>
”’ <remarks></remarks>
Public Sub Main()
‘未補足例外処理設定
AddHandler System.Threading.Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException
‘ log4netのXmlファイルをロード
log4net.Config.XmlConfigurator.Configure(New System.IO.FileInfo(Define.LOG4NET_XML_FILEPATH))
‘ 以下、Main処理
‘ *** Exeから実行した際、Loggerでエラーとなる(Debug実行では問題なし)、実際の処理を関数に移行すると問題なく動作するため ***
‘ *** Main処理を別関数内で記述する。 ***
ProcStart()
End Sub
”’ <summary>
”’ アプリケーション終了処理
”’ </summary>
”’ <param name=”p_enmAppExitCode”>終了コード</param>
”’ <param name=”p_strMessage”>本文に表示するメッセージ</param>
”’ <param name=”p_failedFiles”>失敗したファイル名のリスト</param>
Public Sub ExitApplication(Optional ByVal p_enmAppExitCode As Define.AppExitCode = Define.AppExitCode.Success,
Optional ByVal p_strMessage As String = “”,
Optional ByVal p_failedFiles As List(Of String) = Nothing)
Dim strStatusMark As String = If(p_enmAppExitCode = Define.AppExitCode.Success, “○”,
If(p_enmAppExitCode = Define.AppExitCode.Warning, “△”, “×”))
Dim strBody As String = p_strMessage
‘△または× のときに、失敗拠点一覧を本文に追加(失敗ファイルが存在する場合のみ)
If (p_enmAppExitCode = Define.AppExitCode.Warning OrElse p_enmAppExitCode = Define.AppExitCode.Err) AndAlso
p_failedFiles IsNot Nothing AndAlso p_failedFiles.Count > 0 Then
strBody &= String.Join(vbCrLf, p_failedFiles.ToArray())
End If
Try
Dim objMail As New Mailer()
Dim strEmailAddress As String = ConfigurationManager.AppSettings(My.Settings.Key_StatusMailTo)
Dim strSubjectTemplate As String = ConfigurationManager.AppSettings(My.Settings.Key_StatusMailSubject)
Dim strBodyTemplate As String = ConfigurationManager.AppSettings(My.Settings.Key_StatusMailBody)
‘メール送信
objMail.Send(ConfigurationManager.AppSettings(My.Settings.Key_MailFrom),
strEmailAddress,
String.Format(strSubjectTemplate, strStatusMark, System.Net.Dns.GetHostName()),
String.Format(strBodyTemplate, strBody))
Catch exMail As Exception
Try
DI.Utilities.Logging.Logger.WriteError(“メール送信エラー:” & exMail.Message)
Catch ex As Exception
Console.WriteLine(“アプリケーション終了処理でメール送信エラーログの書き込みに失敗しました。”)
End Try
End Try
DI.Utilities.Logging.Logger.WriteInfo(“Application is End.”)
System.Environment.Exit(p_enmAppExitCode)
End Sub
”’ <summary>
”’ Mainロジックを記述
”’ </summary>
”’ <remarks></remarks>
Private Sub ProcStart()
DI.Utilities.Logging.Logger.WriteInfo(“Application is Starting.”)
‘ 二重起動チェック
If Not MutexManager.SetMutex(AddressOf MainProcess.Run, Define.MUTEX_KEY) Then
Dim strMessage As String = “二重起動されたため処理を実行しませんでした。”
DI.Utilities.Logging.Logger.WriteError(strMessage)
ExitApplication(Define.AppExitCode.Err, strMessage)
End If
End Sub
”’ <summary>
”’ 未補足例外処理
”’ 未補足例外発生時はログに例外メッセージを出力しアプリケーションを終了する。
”’ </summary>
”’ <remarks></remarks>
Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
Try
DI.Utilities.Logging.Logger.WriteException(DirectCast(e.ExceptionObject, Exception))
Catch ex As Exception
Console.WriteLine(“予期せぬ例外が発生しました。エラーログの書き込みも失敗しました。”)
Finally
ExitApplication(Define.AppExitCode.Err, DirectCast(e.ExceptionObject, Exception).ToString())
End Try
End Sub
#End Region
End Module