C# 在Windows窗体应用程序C中关闭窗体后执行某些代码#

C# 在Windows窗体应用程序C中关闭窗体后执行某些代码#,c#,windows,C#,Windows,我正在用一个表单创建一个C#Windows表单应用程序,它会创建一些文件。但我希望这些只是暂时的 所以我打算这样做 在程序执行期间创建的所有文件将在窗体关闭后删除(我试图在关闭窗体之前删除它们,但出现错误,因此我需要在窗体关闭后删除它们)。但问题是我似乎做不到。我试着搜索一些网站,但我找不到解决方案。所以我来了。如果有人知道如何在表单关闭后执行一些代码,请与我分享 提前谢谢 ----编辑---- 感谢你们没有在这里添加代码 我是应用程序开发的新手。 不管怎样,以下是我尝试过的: private

我正在用一个表单创建一个C#Windows表单应用程序,它会创建一些文件。但我希望这些只是暂时的

所以我打算这样做

在程序执行期间创建的所有文件将在窗体关闭后删除(我试图在关闭窗体之前删除它们,但出现错误,因此我需要在窗体关闭后删除它们)。但问题是我似乎做不到。我试着搜索一些网站,但我找不到解决方案。所以我来了。如果有人知道如何在表单关闭后执行一些代码,请与我分享

提前谢谢

----编辑----

感谢你们没有在这里添加代码

我是应用程序开发的新手。 不管怎样,以下是我尝试过的:

private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
    {
        int Length = Directory.GetFiles("C:\\Windows\\Temp\\Yamin").Length;
        for( int i = 0; i < Length; i++ )
        {
            File.Delete("C:\\Windows\\Temp\\Yamin\\" + i + ".jpg");
        }
    }
private void Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
int Length=Directory.GetFiles(“C:\\Windows\\Temp\\Yamin”).Length;
for(int i=0;i
我也试过:

private void Form1_FormClosed(Object sender, FormClosedEventArgs e)
    {
        int Length = Directory.GetFiles("C:\\Windows\\Temp\\Yamin").Length;
        for (int i = 0; i < Length; i++)
        {
            File.Delete("C:\\Windows\\Temp\\Yamin\\" + i + ".jpg");
        }
    }
private void Form1\u FormClosed(对象发送方,FormClosedEventArgs e)
{
int Length=Directory.GetFiles(“C:\\Windows\\Temp\\Yamin”).Length;
for(int i=0;i
我启动程序进行测试。一切正常,但当我关闭表单时,我希望执行上述函数,但它们没有执行。
这是我的问题。

再次感谢你

请查看本手册的文档。这可能是个问题,或者您发布的代码与实际代码不一致

我创建了一个Windows窗体应用程序,并在窗体上放置了两个按钮,一个创建按钮和一个删除按钮

以下是“创建”按钮的代码:

string Name = string.Empty;
for (int i=0; i<3; ++i)
{
    try
    {
        Name = Folder + "SO36922336-" + i.ToString() + ".txt";
        StreamWriter sw = new StreamWriter(Name);
        sw.WriteLine("File created using StreamWriter class.");
        sw.Close();
        sw.Dispose();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error: " + ex.Message + "\r\n" + Name);
    }
}
string[] Files = Directory.GetFiles(Folder, "SO36922336-*.txt");
foreach (string fn in Files)
{
    File.Delete(fn);
}

代码对我有用。因此,要么您不正确地处理了Directory.GetFiles,要么问题出在没有显示的代码中,要么两者都有。您不需要在表单之外执行删除操作。

最简单的解决方案是让操作系统处理这些临时文件。要执行此操作,请调用重载函数(1),并使用参数传递
DeleteOnClose
。这样,一旦关闭文件的所有句柄,系统就会自动删除该文件。额外的好处:如果您的应用程序由于崩溃而终止,操作系统仍然会在您完成后清理文件。

1) 如果您不知道要为bufferSize参数传递什么值,只需选择默认值:4096。

为什么不能在正常处理/OnClose等过程中删除它们。。听起来你好像做错了什么。。你能发布你如何清理文件的代码吗。。显示并使用您尝试过的内容以及您认为它不起作用的原因。我认为您的删除问题与表单的打开或关闭没有任何关系。您的文件可能仍在使用过程中。我想谷歌搜索“C#delete files”将显示一些如何删除文件的示例。(提示:在
文件
对象上有一个
Delete()
方法。)如果您遇到错误,我们可以提供帮助。但是您必须实际显示错误以及产生错误的代码。否则,这里的任何人怎么可能知道你的代码出了什么问题?我敢打赌你在代码中使用的是
图像
/
位图
。因此,您必须释放它们,调用
Dispose
方法。在中逐步处理这些事件。它们是否受到攻击,是否正在执行您认为应该执行的操作?如果没有,请描述实际结果。如果抛出异常,请告诉我们异常是什么。