我讀這篇文章(Can't delete a file using threads)關於我的問題,但事情變得越來越困難。使用C#線程刪除文件
我的問題很簡單,我只想刪除這個舊文件,如果我通常啓動方法「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);
}
只是discribe的目的,我的程序(主管入門)在網站上查詢,如果我有一箇舊版本的「監督員」的運行(使用XML),如果這是真的我的「超級入門」驗證是否存在稱爲「Supervisor」的進程在「Supervisor Starter」下載新版本並運行後運行並殺死它。 (該程序很小,更新時間不超過4秒)。
當我的「Supervisor Starter」嘗試刪除舊版本的程序時,問題就會出現。如果我使用線程,我收到「我沒有權限訪問該文件」,如果我在Form類上使用相同的方法,則文件被刪除。
人們不同可能經常有這樣的問題,這是一個經典線程問題imho,因此很高興在這裏看到這個級別的問題。 –