0

I am running into some interesting issues in my Main form. When I run my program, everything seems to run properly, but after the form loads, some of the functions I put in do not run and variables I have defined do not get new values. I'm not sure what could be causing the blocking of functionality. Below is what I have in the form load action. Below the EmailPort variable is what doesn't run.

I have looked at the question answered before at this link VS2010 does not show unhandled exception message in a WinForms Application on a 64-bit version of Windows and while it gives a good explanation of why this sort of thing happens, I am still unsure of how to make my errors clear so I can debug properly.

    Private Sub MainScreen_Load(sender As Object, e As EventArgs) Handles Me.Load

    'read project path
    Dim path As String = My.Application.Info.DirectoryPath

    'split base path to find root
    Dim BasePath() As String = Split(path, "bin")

    'Sets the current Directory
    Directory.SetCurrentDirectory(BasePath(0) & "Resources")
    'Creates a Path for the file
    Dim Serverpath As String = IO.Path.Combine(BasePath(0), "Resources\Server.ini")
    Dim Configpath As String = IO.Path.Combine(BasePath(0), "Resources\PLCconfig.ini")
    Dim EmailPath As String = IO.Path.Combine(BasePath(0), "Resources\emailIP.ini")

    'Creates a StreamReader
    Dim Server As New StreamReader(Serverpath)
    Dim Config As New StreamReader(Configpath)
    Dim EmailIP As New StreamReader(EmailPath)

    'Read the config file 
    Dim allLinesServer As List(Of String) = New List(Of String)
    Do While Not Server.EndOfStream
        allLinesServer.Add(Server.ReadLine())
    Loop
    Server.Close()

    Dim allLinesConfig As List(Of String) = New List(Of String)
    Do While Not Config.EndOfStream
        allLinesConfig.Add(Config.ReadLine())
    Loop
    Config.Close()

    Dim allLinesEmail As List(Of String) = New List(Of String)
    Do While Not EmailIP.EndOfStream
        allLinesEmail.Add(EmailIP.ReadLine())
    Loop
    EmailIP.Close()

    'server information
    ServerName = ReadLine(1, allLinesServer)
    ServerUser = ReadLine(2, allLinesServer)
    ServerPassword = ReadLine(3, allLinesServer)

    'PLC Config Info
    plcIP = ReadLine(1, allLinesConfig)
    plcTag1 = ReadLine(2, allLinesConfig)

    EthernetIPforCLXCom1.IPAddress = plcIP

    EthernetIPforCLXCom1.Write(plcTag1 & ".InputStat", 1)

    'Email Alert Information
    EmailHost = ReadLine(1, allLinesEmail)
    EmailPort = ReadLine(2, allLinesEmail) <--------- Here is where the form stops working

    'Data buffer for intial read in values
    For i As Integer = 0 To 499
        newDatareal(i) = 999.999
        outDatareal(i) = 999.999
        outputDataReals(i) = 999.999
    Next

    For i As Integer = 0 To 999
        newDatabits(i) = vbFalse
        outdatabits(i) = vbFalse
    Next

    'Set up the timer for IO Manager
    outputInitalize = True

    Timer3.Enabled = True
    Timer3.Interval = 1000

    'Checks to see if main screen is open by itself, if it is, open the main dialog screen
    For Each form In My.Application.OpenForms

        If (form.name = Name) Then
            'form is loaded so can do work 
            'if you need to check whether it is actually visible

            MainDialogScreen.Show()

            If form.Visible Then
                MainDialogScreen.TopMost = True

            End If
        End If
    Next

End Sub

I am using Visual Studio Community and AdvancedHMI v399a in my code.

Thanks in advance for any guidance you can provide

Edit: I found my error by moving the code I had to a button click like suggested. Because I was using a form load action, I was unable to find where the exception was happening. Lesson Learned. Thanks to Plutonix for the debug tip

Community
  • 1
  • 1
Fuzydragon
  • 23
  • 5
  • Move all that code to a button click - you will likely get an exception so you can debug. If something goes wrong in form load, it just exits silently. Moving it will let you diagnose the problem – Ňɏssa Pøngjǣrdenlarp Feb 02 '16 at 19:36
  • @Plutonix Thank you for the advice. I did as you suggested and found the error that was holding everything up. I appreciate this – Fuzydragon Feb 02 '16 at 19:44
  • @Fuzydragon I suggest that you don't handle the Form.Load event like this, but rather that you override the Form's `OnLoad` method. – Luc Morin Feb 02 '16 at 19:48
  • @LucMorin I have never tried using the OnLoad method. I'll look into the application of it and see how I can use it in my code. Thank you for the suggestion. – Fuzydragon Feb 02 '16 at 19:58
  • @Fuzydragon Please check Hans' answer: http://stackoverflow.com/questions/3670806/form-load-event-or-override-onload – Luc Morin Feb 02 '16 at 20:07
  • @LucMorin Thank you for the thread. I've changed my code to have a function run though the OnLoad method. Thank you for the tips and the information – Fuzydragon Feb 02 '16 at 20:18

0 Answers0