Я пишу небольшой фрагмент кода, который определит, какие последовательные порты на компьютере свободны для подключения.Это делается путем обхода различных последовательных портов и вызова метода Open ().Если возникает исключение, это указывает на то, что порт недоступен.
Однако, визуальные студии говорят мне, что я не избавляюсь от объекта должным образом, или слишком много раз удаляю его, если я помещаю метод dispose внаконец заблокировать.Каков наилучший способ избавиться от объекта последовательного порта, и разумно ли создать новый объект последовательного порта в for или оставить его как есть?
В разделе с комментариями с вопросительными знаками находятся биты, которыеЯ не уверен насчет.
public static void QueryOpenPorts(out string[] portNames, out bool[] isOpen)
{
// serial port object used to query
SerialPort serialPort = new SerialPort();
// get valid ports on current computer
portNames = SerialPort.GetPortNames();
// number of valid ports
int count = portNames.Length;
// initialise isOpen array
isOpen = new bool[count];
// iterate through portNames and check Open()
for (int i = 0; i < count; i++)
{
// set port name
serialPort.PortName = portNames[i];
// attempt to open port
try
{
serialPort.Open();
// port available
isOpen[i] = true;
}
catch (Exception ex)
{
// serial port exception
if (ex is InvalidOperationException || ex is UnauthorizedAccessException || ex is IOException)
{
// port unavailable
isOpen[i] = false;
}
}
finally
{
// // close serial port if opened successfully ????????????
// if (serialPort.IsOpen)
// {
// serialPort.Close();
// }
}
}
// release object ?????????
// serialPort.Dispose();
}