When an assembly uses Windows Forms (classes and interfaces from the System.Windows.Forms
namespace) its entry point should be marked
with the STAThreadAttribute
to indicate that the threading model should be "Single-Threaded Apartment" (STA) which is the only one
supported by Windows Forms.
This rule raises an issue when the entry point (Shared Sub Main
method) of an assembly using Windows Forms is not marked as STA.
Noncompliant code example
Imports System.Windows.Forms
Public Class Foo
Shared Sub Main()
Dim winForm As Form = New Form
Application.Run(winForm)
End Sub
End Class
Compliant solution
Imports System.Windows.Forms
Public Class Foo
<STAThread()> Shared Sub Main()
Dim winForm As Form = New Form
Application.Run(winForm)
End Sub
End Class