Pregunta

Para evitar los moderadores que no les gustan las preguntas generales, esta es una Visio VBA, pero no quería incluir eso en el título, ya que es un poco de nicho, y supongo que la respuesta puede ser genérica :-)

Mi código tiene las siguientes variables:

Public gappVisio As Visio.Application
Public gdocFile As Visio.Document
Public gpagDiagram As Visio.Page

Para aquellos no familiares con Visio, crea un objeto de aplicación, abra el documento y luego configura una referencia a una página en el documento donde realmente puede hacer un dibujo.

Todos los VAR son globales, pero en realidad GDocfile solo se usa en mi rutina de inicialización. Entonces, mi pregunta es, ¿necesito GDOCFILE como global, o puedo hacerlo local? Supongo que me preocupaba que si era local cuando salía de alcance, podría ordenar el objeto de documento, ¡pero todavía necesito la página del documento?

¿Eso tiene sentido?

¿Fue útil?

Solución

No hagas una variable u objeto global a menos que tenga que tener que hacerlo, lo cual casi nunca.Pase las referencias de objetos como parámetros a aquellos procedimientos que los necesitan, y solo para aquellos.Cualquier cosa que necesite del objeto antes de que "se quede fuera de alcance", como usted dice, debe pasarse al procedimiento de llamada como valor de retorno de la función (o, más de manera obscurera, menos preferiblemente, el valor de parámetros del subybref).

Cuando dice que un objeto está fuera de alcance, en realidad es la referencia a ese objeto que está fuera de alcance.El objeto todavía existe inalterado en la memoria.

Generalmente, global es malo y conduce a un código difícil de mantener, pero las excepciones podrían ser cosas como las constantes universales, por ejemplo.

Public Const PI As Double = 3.14159265358979

Está bien tenerlo como global.

Otros consejos

En su caso, el documento Lifetime está controlado por la aplicación de Visio, el DOC no se limpiará, sin importar la cantidad de variables que se refieren a ella que crea, o en qué alcances son (globales o locales).Medios, todas las reglas de conteo de referencia (SCOPING) son simplemente ignoradas por Visio para documentos, de hecho, el DOC no se destruye, incluso si no hay más referencias de su código.

Puede decirle a Visio para cerrar el documento usando Document.Close.Después de esa llamada, cualquier intento de usar los métodos o propiedades de los documentos (o la página) utilizando cualquiera de las variables de doctor / página que remite este documento / página en este documento resultará en una excepción.

Un documento puede ser cerrado por el usuario.En este caso, todas las variables que se refieren a ella (u objetos dentro de ella, como las páginas o las formas) se harán inválidos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top