相当无语的一个bug。又是关于DLL中接口的释放

简介: procedure TFormMain.btn1Click(Sender: TObject); begin //加载dll TReportConsoleLibWrapper.checkInitialize; try //创建一个接口,由DLL创建 with TReportConsoleLibWrapper.
procedure TFormMain.btn1Click(Sender: TObject);
begin
  //加载dll
  TReportConsoleLibWrapper.checkInitialize;
  try
    //创建一个接口,由DLL创建
    with TReportConsoleLibWrapper.createReportConsole(createDefaultOperator) do
    try
      //调用接口方法,显示窗体
      ShowConsole;
    finally
      //调用接口方法,释放窗体
      FreeConsole;
    end;
  finally
    //释放dll
    TReportConsoleLibWrapper.checkFinalization;
  end;
end;

以上代码点击按钮运行完后出错

 

 

稍微修改一下

procedure TFormMain.btn1Click(Sender: TObject);
begin
  //加载dll
  TReportConsoleLibWrapper.checkInitialize;
  try
    //创建一个接口,由DLL创建
    lvReportConsole:=TReportConsoleLibWrapper.createReportConsole(createDefaultOperator);
    with lvReportConsole do
    try
      //调用接口方法,显示窗体
      ShowConsole;
    finally
      //调用接口方法,释放窗体
      FreeConsole;
    end;

    //设置nil,会调用接口对象的.relase方法 必须在释放dll之前释放
    //否则函数执行完成后释放领的接口对象时会出现异常.因为整个dll都释放了
    lvReportConsole := nil;
  finally
    //释放dll
    TReportConsoleLibWrapper.checkFinalization;
  end;
end;

仔细下来想想确实还是自己的问题。明明知道,还犯下了这样的错误,还我调了4个小时。头都晕了

 

目录
相关文章
|
2月前
|
Windows
ctfmon.exe频繁出错的一个解决办法
ctfmon.exe频繁出错的一个解决办法
ctfmon.exe频繁出错的一个解决办法
怎么删除360base64.dll,这个方法百分百管用
怎么删除360base64.dll,这个方法百分百管用
329 0
|
数据库 C++
《C++避坑神器·十七》找到程序崩溃Bug的一个实用方法:dump调试
《C++避坑神器·十七》找到程序崩溃Bug的一个实用方法:dump调试
138 0
|
C++
地平线5打不开(找不到XINPUT1_3.dll,无法继续执行代码)
地平线5打不开(找不到XINPUT1_3.dll,无法继续执行代码)
315 0
地平线5打不开(找不到XINPUT1_3.dll,无法继续执行代码)
|
Java 应用服务中间件 Docker
同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
代码Debug调试是研发工程师日常工作中必不可少的重要组成部分。进行代码Debug调试的目的无非就两个,一个是自我检查代码逻辑是否有问题,便于自己将Bug消灭在测试介入之前;另一个是进行线上问题排查定位,找到实际在跑业务的过程中出现的Bug。
同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
|
安全 Windows
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
|
搜索推荐 Java 程序员
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)-2
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)
830 0
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)-2
|
Java Linux
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)-1
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)
771 0
IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)-1
|
存储 Oracle 关系型数据库