小编Idl*_*ind的帖子

VB.net 当我使用一个类时,当我使用一个模块时,我得到“System.NullReferenceException”,一切正常,希望有人能解释为什么

描述:我使用的是 Windows CE HMI,在 vb.net 中编写代码。我正在通过 Modbus RTU (RS485) 与 4 个流量计进行通信。我正在使用 dll 进行 Modbus 通信。现在,当我在我的程序中启动一个新线程来运行模块的一部分时,一切正常,我正在与 4 米通信。到现在为止还挺好。但是现在我想让我的代码更有效率,而不是在一个模块中抛出四米的所有代码,我想创建 4 个类。

我在我的主窗体(按钮)中得到了这段代码来创建对象。

Dim Meter1 As New cModbusDriver(1) '(1) is the Modbus Meter ID
Dim Meter1_Thread As New Thread(AddressOf Meter1.ModbusDriver)

Meter1_Thread.IsBackground = True
Meter1_Thread.Start()
Run Code Online (Sandbox Code Playgroud)

以下是我班级的一部分:

Public Class cModbusDriver

    Private master As ModbusSerialMaster

    Public Sub ModbusDriver()

        While blnStopModbusThread = False

            Select Case intState
                Case 1
                    Try
                        Dim holding_register() As UShort = master.ReadHoldingRegisters(1, 0, 8)

                        Flow = HextoFloat.ConvertHexToSingle((Hex(holding_register(1)) &      Hex(holding_register(0)))) 
Run Code Online (Sandbox Code Playgroud)

错误 System.NullReferenceException 来自该行Dim …

vb.net

3
推荐指数
1
解决办法
81
查看次数

C# System.IO.DirectoryNotFoundException:找不到路径的一部分

        try
        {
             string directory = @"D:/user/user.txt";
             FileStream FS = new FileStream(directory, FileMode.Append);
             StreamWriter SW = new StreamWriter(FS);
             string register;
             register = $"{generateID()};{txtfirstName.Text};{txtLastName.Text};{txtUser.Text};{txtEmail.Text};{txtPersonalID.Text}";
             SW.WriteLine(register);
             SW.Close();
             FS.Close();
        }
        catch (Exception ex)
        {
             MessageBox.Show(ex.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

我在 C# Windows Forms .NET Framework 中运行此代码,并且不断收到相同的消息。我正在上大学,我对编程还很陌生,所以我不知道可能出了什么问题。你有什么想法?任何想法?

在此输入图像描述

c# windows-forms-designer visual-studio .net-4.8

2
推荐指数
1
解决办法
3万
查看次数