Я пишу приложение .NET, которое работает на Mono. Он выполняет и получает вывод нескольких команд терминала каждую секунду или около того, непрерывно.
Однако через несколько секунд он выйдет из строя, потому что вывод будет нулевым.
При дальнейшем проверке это происходит из-за сбоя процесса, поскольку у него закончилось отсутствие памяти, например:
ERROR: System.ComponentModel.Win32Exception: ApplicationName='upower', CommandLine='-i /org/freedesktop/UPower/devices/battery_BAT0', CurrentDirectory='', Native error= Out of memory
Есть ли способ быстро выполнять команды при очистке памяти, используемой после использования, поэтому у нее не хватает памяти?
Я выполняю команды вроде поэтому:
Dim ret As String = ""
Dim proc As New System.Diagnostics.Process()
proc.StartInfo.FileName = file 'i.e upower
proc.StartInfo.Arguments = arguments 'i.e. -i /org/freedesktop/UPower/devices/battery_BAT0
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.Start()
ret = proc.StandardOutput.ReadToEnd()
proc.WaitForExit()
Return ret
Запуск «Mono -version» возвращает версию 3.2.8, если это помогает.
Я даже попытался помещать proc.WaitForExit() перед чтением вывода, но это didn Не помогите.