Пример #1
0
        protected void CallDestroy(DestroyEntryPointDelegate entryPoint)
        {
            #region Comments (Exception on Disposing)

            //Rodando dentro do Visual Studio
            //o Debugger causa um AccessViolationException
            //ao inspecionar a chamada ao entryPoint do Destroy
            //
            //-----------------------------------------------------------------
            //Isso é resolvido abrindo as propriedades do projeto EXECUTÁVEL,
            //na aba "Debug" e marcando a opção "Enable unmanaged code debugging"
            //-----------------------------------------------------------------
            //
            //Como a maioria dos usuários não adota esse procedimento,
            //a exception é coletada no Try/Catch e não é disparada
            //caso o ambiente seja DEBUG
            //
            //Note que o erro ocorre apenas quando roda dentro do VS por causa do Debugger com código nativo
            //Tanto compilando em RELASE quanto DEBUG

            #endregion Comments (Exception on Disposing)

            try
            {
                var ret = entryPoint(this.handle);
                CheckResult(ret);

                this.handle = IntPtr.Zero;
            }
            catch (AccessViolationException)
            {
#if !DEBUG
                throw;
#endif
            }
        }
Пример #2
0
		protected void CallDestroy(DestroyEntryPointDelegate entryPoint)
		{
			#region Comments (Exception on Disposing)

			//Rodando dentro do Visual Studio
			//o Debugger causa um AccessViolationException
			//ao inspecionar a chamada ao entryPoint do Destroy
			//
			//-----------------------------------------------------------------
			//Isso é resolvido abrindo as propriedades do projeto EXECUTÁVEL,
			//na aba "Debug" e marcando a opção "Enable unmanaged code debugging"
			//-----------------------------------------------------------------
			//
			//Como a maioria dos usuários não adota esse procedimento,
			//a exception é coletada no Try/Catch e não é disparada
			//caso o ambiente seja DEBUG
			//
			//Note que o erro ocorre apenas quando roda dentro do VS por causa do Debugger com código nativo
			//Tanto compilando em RELASE quanto DEBUG

			#endregion Comments (Exception on Disposing)

			try
			{
				var ret = entryPoint(this.handle);
				CheckResult(ret);

				this.handle = IntPtr.Zero;
			}
			catch (AccessViolationException)
			{
#if !DEBUG
				throw;
#endif
			}
		}