gpt4 book ai didi

c# - 使用 C# Thread 删除文件

转载 作者:太空狗 更新时间:2023-10-29 21:46:45 25 4
gpt4 key购买 nike

我正在阅读这篇关于我的问题的文章 ( Can't delete a file using threads ),但事情对我来说变得越来越困难。

我的问题真的很简单,我只想删除这个旧文件,如果我正常启动方法“dlMoveNovaVersao”,文件会被删除,但如果我把它放在一个线程上(如下所示),我会得到“你不允许”。有人知道有什么问题吗? (我想使用线程)。

    private void verificaVersaoSupervisor_Tick(object sender, EventArgs e)
{
Thread threadConexao = new Thread(threadVerificaConexao);
threadConexao.Start();
}

public void threadVerificaConexao()
{
try
{
Dns.GetHostEntry("www.google.com.br");
if (verificaVersao())
{
try
{
verificaKillSupervisor();
dlMoveNovaVersao();
Application.Exit();
}
catch (Exception)
{ }
}
else
{
Application.Exit();
}
}
catch (Exception)
{ }
}

public void dlMoveNovaVersao()
{
WebClient webClient = new WebClient();
webClient.DownloadFile("Anywebsite", @"c:\temp\supervisor.exe);
try
{
File.Delete(@"c:\Test\supervisor.exe); //This file is always there!
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}

只要描述一下目的,我的程序(Supervisor Starter)会在网站上检查我是否正在运行旧版本的“Supervisor”(使用 XML),如果是,我的“Supervisor Starter”会验证是否有一个名为“Supervisor”的进程”运行并在“Supervisor Starter”下载新版本并运行它之后将其杀死。 (程序很小,更新不会超过 4 秒)。

当我的“Supervisor Starter”尝试删除我的程序的旧版本时,问题就开始了。如果我使用线程,我会收到“我无权访问该文件”,如果我在 Form 类上使用相同的方法,该文件将被删除。

最佳答案

我怀疑您在文件正在使用时正在运行线程。当线程运行时,它与当前线程并行运行。您确定该文件已关闭吗?

否则我认为线程可能是使用不属于您的凭据创建的。但我很确定情况并非如此。

看看每个案例是否不同

catch (Exception err)
{
MessageBox.Show("User {0}. Message {1}",
System.Security.Principal.WindowsIdentity.GetCurrent().Name,
err.Message);
}

关于c# - 使用 C# Thread 删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com