@ respuesta de Fooberichu en el clavo, pero creo que también es importante señalar que por lo general, solo unas pocas cosas "necesitan" ser eliminadas explícitamente.
objetos siempre están dispuestos de manera efectiva en algunos punto:
- Cada vez que el GC hace una colección, que se (con el tiempo) disponer de objetos que ya no se hace referencia. Por lo tanto, si no desecha manualmente, el objeto puede eliminarse en unos pocos segundos hasta que se salga del alcance.
- Cuando se cierra la aplicación, se liberan todos los recursos que tenía. (Aunque es posible que C# /. Net no elimine los objetos, el sistema operativo reclamará prácticamente todo lo que su proceso haya obtenido.Si el tiempo de vida del recurso se extiende más allá de su aplicación, el sistema operativo es generalmente responsable de la limpieza para arriba)
El punto de eliminar manualmente (o el empleo de un 'utilizar') es, por tanto, no para garantizar que los recursos se liberará, pero a libérelos tan pronto como sea posible.
En estos días es poco probable que se quede sin la mayoría de los tipos de recursos (por ejemplo, memoria, identificadores de archivos o pinceles del sistema). Sin embargo, si se aferra a los recursos cuando no es necesario, es probable que su programa sea menos eficiente, puede usar más memoria de la necesaria, o tal vez causar demoras bloqueando temporalmente que otras aplicaciones hagan cosas útiles, etc. En general, entonces, la eliminación consiste en la buena etiqueta, la limpieza y la eliminación de ineficiencias innecesarias.
Hay algunos casos en los que se deben liberar los recursos (por ejemplo, si no cierra un archivo, no puede abrir/cambiar el nombre/moverlo o eliminarlo de ningún otro lugar de su programa u otros programas; siga asignando texturas en su tarjeta gráfica sin soltarlas, se quedará sin VRAM y la pantalla de la computadora fallará), pero en general, encontrará estas situaciones con poca frecuencia, y si sigue las mejores prácticas (eliminando objetos explícitamente cuando ya no es necesario), generalmente no necesitará saber cuándo se producen estas situaciones porque ya las tratará correctamente.
El problema es que no entiendo completamente la vida del objeto en esta situación. Si lo hago usando (Process.Start (url)); entonces ¿esperará en ese punto? ¿O eliminará el proceso temprano? Por el momento, eso no hace ninguna diferencia en el comportamiento, por lo que _sugiere_ que no hay recursos que se mantienen abiertos, pero no estoy seguro y no sé cómo medir eso. –
Dado que la cláusula "using" instruye implícitamente al compilador para crear una try/finally e implementar un dispose y el hecho de que están devolviendo un objeto IDisposable, creo que sería seguro hacerlo. Al no desasignarlo, puede estar atando recursos. Podría tratar de crear un bucle que abra varias URL sin eliminarlas y ver si sus recursos se salen de control y otra prueba enviándolas al uso de cláusulas. La advertencia es que tendrás un montón de ventanas para cerrar después de eso. :) – Fooberichu