| File: Microsoft\VisualBasic\ApplicationServices\ApplicationBase.vb | Web Access |
| Project: src\winforms\src\Microsoft.VisualBasic.Forms\src\Microsoft.VisualBasic.Forms.vbproj (Microsoft.VisualBasic.Forms) |
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. Imports System.Threading Imports VbUtils = Microsoft.VisualBasic.CompilerServices.ExceptionUtils Namespace Microsoft.VisualBasic.ApplicationServices ''' <summary> ''' Abstract class that defines the application Startup/Shutdown model for VB ''' Windows Applications such as console, WinForms, dll, service. ''' </summary> Public Class ApplicationBase ' The executing application (the EntryAssembly) Private _info As AssemblyInfo 'Lazy-initialized and cached log object. Private _log As Logging.Log Public Sub New() End Sub ''' <summary> ''' Gets the information about the current culture used by the current thread. ''' </summary> Public ReadOnly Property Culture() As Globalization.CultureInfo Get Return Thread.CurrentThread.CurrentCulture End Get End Property ''' <summary> ''' Returns the info about the application. If we are executing in a DLL, we still return the info ''' about the application, not the DLL. ''' </summary> Public ReadOnly Property Info() As AssemblyInfo Get If _info Is Nothing Then Dim assembly As Reflection.Assembly = If(Reflection.Assembly.GetEntryAssembly(), Reflection.Assembly.GetCallingAssembly()) _info = New AssemblyInfo(assembly) End If Return _info End Get End Property ''' <summary> ''' Provides access to logging capability. ''' </summary> ''' <value> ''' Returns a <see cref="Logging.Log"/> object used for logging ''' to OS log, debug window and a delimited text file or xml log. ''' </value> Public ReadOnly Property Log() As Logging.Log Get If _log Is Nothing Then _log = New Logging.Log End If Return _log End Get End Property ''' <summary> ''' Gets the information about the current culture used by the Resource ''' Manager to look up culture-specific resource at run time. ''' </summary> ''' <value> ''' The <see cref="Globalization.CultureInfo"/> object that represents the culture used by the ''' Resource Manager to look up culture-specific resources at run time. ''' </value> Public ReadOnly Property UICulture() As Globalization.CultureInfo Get Return Thread.CurrentThread.CurrentUICulture End Get End Property ''' <summary> ''' Changes the culture currently in used by the current thread. ''' </summary> ''' <remarks> ''' <see cref="Globalization.CultureInfo"/> constructor will throw exceptions if cultureName is Nothing ''' or an invalid CultureInfo ID. We are not catching those exceptions. ''' </remarks> Public Sub ChangeCulture(cultureName As String) Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo(cultureName) End Sub ''' <summary> ''' Changes the culture currently used by the Resource Manager to look ''' up culture-specific resource at runtime. ''' </summary> ''' <remarks> ''' <see cref="Globalization.CultureInfo"/> constructor will throw exceptions if cultureName is Nothing ''' or an invalid CultureInfo ID. We are not catching those exceptions. ''' </remarks> Public Sub ChangeUICulture(cultureName As String) Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo(cultureName) End Sub ''' <summary> ''' Returns the value of the specified <see cref="Environment"/> variable. ''' </summary> ''' <param name="Name">A String containing the name of the environment variable.</param> ''' <returns>A string containing the value of the environment variable.</returns> ''' <exception cref="ArgumentNullException">if name is Nothing.</exception> ''' <exception cref="ArgumentException">if the specified environment variable does not exist.</exception> Public Function GetEnvironmentVariable(name As String) As String ' Framework returns Null if not found. Dim variableValue As String = Environment.GetEnvironmentVariable(name) ' Since the explicitly requested a specific environment variable and we couldn't find it, throw If variableValue Is Nothing Then Throw VbUtils.GetArgumentExceptionWithArgName( NameOf(name), SR.EnvVarNotFound_Name, name) End If Return variableValue End Function End Class End Namespace