我在 Win Forms 中使用 webapi 类和应用程序有问题。Win 窗体应用程序具有访问串行端口的类。此类已在主应用程序中初始化。
发生的错误是:非静态字段、方法或属性需要对象引用
步骤如下:webapi 接收命令并将数据发送到 MainForm。MainForm 应该发送到串行端口,但我没有得到。报告的错误发生。
资料来源如下:
WebApi 事件:
[HttpPost]
public void ExecutarComando([FromBody]string comando)
{
TCCWindows.FormPrincipal.EnviarComandoWeb(comando);
}
程序:
public partial class FormPrincipal : Form
{
SerialPort spSimulador = new SerialPort();
PortaSerial spSistema = new PortaSerial();
HttpSelfHostServer server;
private Bitmap image = null;
private Bitmap image2 = null;
private float angle = 0.0f;
private float angle2 = 0.0f;
public static string LatitudeGD, LongitudeGD;
....
....
public static void EnviarComandoWeb(string comando)
{
spSistema.EnviarComandoWeb(comando);
}
}
问题在:
public static void EnviarComandoWeb(string comando)
{
spSistema.EnviarComandoWeb(comando);
}
问题是您访问非静态PortaSerial spSistema
通过静态成员EnviarComandoWeb
这
PortaSerial spSistema = new PortaSerial();
尝试执行此操作时未运行
spSistema.EnviarComandoWeb(comando);
你就是做不到。一定不能这样做。换句话说,您不应该期望在访问静态方法时,将初始化整个类。只能使用静态方法中的静态成员。