.net почему нужно закрывать ручки при закрытии программы - PullRequest
0 голосов
/ 29 марта 2019

в соответствии с этой документацией я должен располагать ручки при закрытии программы.

https://infosys.beckhoff.com/english.php?content=../content/1033/tcquickstart/html/tcquickstart_samplevisualbasicnet.htm&id=

 '------------------------------------------
    'wird beim Beenden des Programms aufgerufen
    'is activated when ending the program
 '------------------------------------------
Private Sub frmMachine_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    Try
        ' Löschen der Notifications und Handles
        ' Deleting of the notifications and handles
        tcClient.DeleteDeviceNotification(hEngine)
        tcClient.DeleteDeviceNotification(hDeviceUp)
        tcClient.DeleteDeviceNotification(hDeviceDown)
        tcClient.DeleteDeviceNotification(hSteps)
        tcClient.DeleteDeviceNotification(hCount)
        tcClient.DeleteDeviceNotification(hSwitchNotify)

        tcClient.DeleteVariableHandle(hSwitchWrite)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    tcClient.Dispose()
End Sub

Это нужно? Разве память не освобождается, когда я закрываю программу? Может ли случиться так, что дескриптор присутствует несколько раз, если программа закрывается, а затем снова открывается?

1 Ответ

1 голос
/ 29 марта 2019

Это событие закрытия формы, которое, да, да, если вы создаете приложение с одной формой, также будет происходить при закрытии программы, но я думаю, что это, вероятно, предназначено для иллюстрации общего Принцип, который вы очищаете после того, как вы закончите, используя вещи.

В целом вы правы, что если программа собирается завершить работу, вам не нужно проводить такую ​​уборку. Как говорит Рэймонд Чен :

Здание сносится. Не надо подметать пол, вычищать мусорные баки и стирать доски. И не выстраивайтесь в очередь на выходе из здания, чтобы каждый мог вывести свой входной / выходной магнит наружу. Все, что вы делаете, это заставляете команду по сносу ждать, пока вы закончите эти бессмысленные задачи по уборке дома.

Дескрипторы ОС будут возвращены при выходе из процесса. Однако, если вы обмениваетесь данными с внешним оборудованием, возможно, будет удобнее удалить дескрипторы, если это переведет оборудование обратно в заведомо исправное состояние (однако возникает вопрос о том, что должно произойти в случае сбоя вашей программы)

...