I am a newbie, learning by using snippets of code. Trying to make this console app for a TCP Listener work. But keep getting Build error " BC30737 No accessible 'Main' method with an appropriate signature was found. I tried changing to Shared Sub Main() but no difference.

Any advice appreciated.
Code:
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading

Public Class TcpServer

    Private listener As TcpListener
    Private listenThread As Thread
    Private isListening As Boolean = False

    Sub Main()
        Dim port As Integer = 1470
        Call StartServer(port)

    End Sub
    Public Sub StartServer(port As Integer)
        Try
            listener = New TcpListener(IPAddress.Any, port)
            listener.Start()
            isListening = True
            listenThread = New Thread(AddressOf ListenForClients)
            listenThread.Start()
            Console.WriteLine($"Server started on port {port}")
        Catch ex As Exception
            Console.WriteLine($"Error starting server: {ex.Message}")
        End Try
    End Sub

    Private Sub ListenForClients()
        While isListening
            Try
                Dim client As TcpClient = listener.AcceptTcpClient()
                Console.WriteLine("Client connected.")
                ' Handle the client in a new thread or task
                Dim clientThread As New Thread(AddressOf HandleClientComm)
                clientThread.Start(client)
            Catch ex As SocketException When ex.SocketErrorCode = SocketError.Interrupted OrElse ex.SocketErrorCode = SocketError.ConnectionReset
                ' Listener was stopped or connection reset
                Console.WriteLine("Listener interrupted or connection reset. Restarting listener...")
                StopServer()
                StartServer(CType(listener.LocalEndpoint, IPEndPoint).Port) ' Restart on the same port
            Catch ex As Exception
                Console.WriteLine($"Error accepting client: {ex.Message}")
            End Try
        End While
    End Sub

    Private Sub HandleClientComm(clientObj As Object)
        Dim client As TcpClient = CType(clientObj, TcpClient)
        Dim stream As NetworkStream = Nothing
        Try
            stream = client.GetStream()
            ' Implement your communication logic here (read/write to stream)
            ' Example:
            Dim buffer(1023) As Byte
            Dim bytesRead As Integer
            While client.Connected AndAlso (bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0
                Dim receivedData As String = Encoding.ASCII.GetString(buffer, 0, bytesRead)
                Console.WriteLine($"Received: {receivedData}")
                ' Send a response
                Dim responseBytes As Byte() = Encoding.ASCII.GetBytes("ACK: " & receivedData)
                stream.Write(responseBytes, 0, responseBytes.Length)
            End While
        Catch ex As IOException
            Console.WriteLine($"Client disconnected: {ex.Message}")
        Catch ex As Exception
            Console.WriteLine($"Error handling client: {ex.Message}")
        Finally
            If Not stream Is Nothing Then
                stream.Close()
                stream.Dispose()
            End If
            If Not client Is Nothing Then
                client.Close()
                client.Dispose()
            End If
        End Try
    End Sub

    Public Sub StopServer()
        If Not listener Is Nothing AndAlso isListening Then
            isListening = False
            listener.Stop()
            If Not listenThread Is Nothing AndAlso listenThread.IsAlive Then
                listenThread.Join() ' Wait for the listener thread to finish
            End If
            Console.WriteLine("Server stopped.")
        End If
    End Sub

End Class