如何解决“没有足够的内存资源来处理此命令”?

问题描述 投票:0回答:1

我有一个使用串行端口与设备通信的应用程序。 我总是发送命令并接收,但 2/3 小时后我收到我在标题上写的消息。

我已经尝试对我的代码进行一些更改,但没有成功。

Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick
  Call New Thread(Sub()
    SendCommand(command)
  End Sub).Start()
End Sub

Private Sub SendCommand(command as String)
  serialPort.DiscardInBuffer()
  serialPort.DiscardOutBuffer()
  serialPort.Write(command)
End Sub

计时器有 400 毫秒。 一切正常,但 2/3 小时后我收到错误: 没有足够的内存资源来处理此命令

问题修复:

Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick
  Dim t = Task.Run(Sub()
    SendCommand(command)
  End Sub)
End Sub
.net wpf vb.net serial-port
1个回答
0
投票

这取决于您的应用程序在 SendCommand() 调用中执行的操作。在接下来的某个地方,它可能会注册一个窗口类(例如,https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerclassexa)或其他一些资源然后不注销它。查看错误的整个调用堆栈可能会提供线索。

© www.soinside.com 2019 - 2024. All rights reserved.