protected override void Dispose( bool disposing )
		{
			base.Dispose(disposing);
			
			// Desliga a thread
            animar = false;
            animação = null;
		}
            /// <summary>
            /// Carrega a animação em segundo plano (chamada pela thread).
            /// </summary>
            private void CarregarAnimação()
            {
                animação = mercadoria.Animação;

                if (animação != null && animação.Imagens != null)
                {
                    this.Imagens.AddRange(animação.Imagens);
                    this.Imagens.RemoveAt(0);
                }

                carregado = true;
            }
示例#3
0
		/// <summary>
		/// Obtém no banco de dados as várias imagems para referência informada
		/// e cria uma animação
		/// </summary>
		/// <param name="referênciaNumérica"></param>
		/// <returns></returns>
		public static Animação ObterAnimação(Mercadoria.Mercadoria mercadoria)
		{
            Console.WriteLine("Animação::ObterAnimação()");

			IDataReader   leitor = null;
			ArrayList     dados = new ArrayList();
			Animação      animação;
            IDbConnection conexão = Conexão;

            lock (conexão)
            {
                Usuários.UsuárioAtual.GerenciadorConexões.RemoverConexão(conexão);
                using (IDbCommand cmd = conexão.CreateCommand())
                {
                    cmd.CommandText = "SELECT foto FROM foto WHERE mercadoria = " + DbTransformar(mercadoria.ReferênciaNumérica);

                    using (leitor = cmd.ExecuteReader())
                    {

                        try
                        {
                            while (leitor.Read())
                            {
                                /* Para minimizar o tempo com a conexão presa,
                                 * o processamento da imagem só será feito
                                 * após recuperar todos os dados do banco de dados,
                                 * liberando assim a conexão.
                                 * -- Júlio, 18/11/2005
                                 */
                                dados.Add(leitor.GetValue(0));
                            }
                        }
                        finally
                        {
                            if (leitor != null)
                                leitor.Close();

                            Usuários.UsuárioAtual.GerenciadorConexões.AdicionarConexão(conexão);
                        }
                    }
                }
            }

			if (dados.Count == 0)
				return null;

			animação = new Animação();

            foreach (byte[] objFoto in dados)
            {
                Image imagem = (Image)new DbFoto(objFoto);

                if (imagem != null)
                    animação.Imagens.Add(imagem);
            }

            Console.WriteLine("Fim Animação::ObterAnimação()");

			return animação;
		}
		/// <summary>
		/// Inicia uma animação.
		/// Chame PausarAnimação() para pausar.
		/// </summary>
		/// <param name="animação">Animação da mercadoria</param>
		public void MostrarAnimação(Animação animação)
		{
#if DEBUG
            if (animação != null)
                Console.WriteLine("Mostrando animação: {0}", animação.ToString());
#endif

			this.animação = animação;
			animar = true;

            if (animação == null || animação.Carregado && animação.Imagens.Count <= 1)
                MostrarPróximoQuadro();
            else
            {
                if (thread == null)
                    CriarThread();
                else
                    InterromperThread();
            }
        }
        /// <summary>
        /// Inicia animação de mercadoria.
        /// </summary>
        /// <param name="mercadoria">Mercadoria cuja animação será exibida.</param>
        /// <remarks>
        /// Verifica se a mercadoria já possui a animação carregada.
        /// Caso contrário, carrega em segundo plano.
        /// </remarks>
        public void MostrarAnimação(Entidades.Mercadoria.Mercadoria mercadoria)
        {
#if DEBUG
            if (animação != null)
                Console.WriteLine("Mostrando animação: {0}", animação.ToString());
#endif
            if (mercadoria.FotoObtida)
                MostrarAnimação(mercadoria.Animação);
            else
            {
                this.animação = new AnimaçãoOca(mercadoria);

                animar = true;

                if (thread == null)
                    CriarThread();
                else
                    InterromperThread();
            }
        }