FolderBrowserDialog导致应用程序在退出后留在内存中?[英] FolderBrowserDialog causes app to stay in memory after exit?

问题描述

有没有其他人遇到过在 C# Windows 窗体应用中创建新的 FolderBrowserDialog() 会导致应用在应用正常退出后留在内存中的问题?

从 FolderBrowserDialog.ShowDialog() 调用获得结果后,我调用了 Dispose() 方法.但是,正常退出应用后,我可以使用Windows任务管理器,看到exe还在进程列表中.
这个应用程序有很多表单,除了FolderBrowserDialog()之外没有一个会导致这个问题.
有谁知道这个的解决方法吗?

好的,所以我按照建议创建了一个小测试应用程序,果然,测试应用程序有同样的问题.
在测试应用程序中,我使用了 Visual Studio 2010 并创建了一个新的 Windows 窗体项目.
然后,我在主窗体中添加了一个按钮.以下代码显示了按钮事件.
当我运行这个测试应用程序时,只要我从不点击按钮1,应用程序就会正常消失.
如果我确实单击了 button1,那么当我退出应用程序时,应用程序似乎会正常退出.但是,使用任务管理器显示 exe 仍在进程选项卡中.
另一件事是,此问题仅来自运行 Release 版本.在 IDE 调试器中运行不会导致此问题.显然,Visual Studio 知道如何清理,即使发布 exe 仍然以某种方式保留资源或其他东西.

此应用在 Win XP SP3 和 .NET 4 上运行.

使用系统;使用 System.Collections.Generic;使用 System.ComponentModel;使用 System.Data;使用 System.Drawing;使用 System.Linq;使用 System.Text;使用 System.Windows.Forms;命名空间 FolderBrowserTest{public 部分 class Form1 : Form{public Form1(){初始化组件();}private void button1_Click(object 发送者,EventArgse){FolderBrowserDialog fbd = new FolderBrowserDialog();DialogResult 结果 = fbd.ShowDialog();fbd.Dispose();}}}

推荐答案

我不确定这是否可行,但值得一试.当程序关闭时(无论调用什么方法来执行此操作),将其添加为代码的最后一行:

//关于Exit Event Handler Method或者你使用的程序退出方法:{//..... blah blah blahEnvironment.Exit(0);//您可以使用与 0 不同的 ExitCode,但 0 应该可以正常工作.它对我有用}


这可能不是最专业的方法,但如果没有其他方法可以使用,为什么不这样做;)

本文地址:https://www.itbaoku.cn/post/1394740.html