Impossibile eliminare file perchè già in uso....

martedì 22 settembre 2009 - 16.33

loziopigna Profilo | Newbie

Ciao a tutti, sono nuovo del forum e spero di aver azzeccato il forum per questo Thread.

Stò cercando di sistemare una piccola applicazione scritta in C# che mi ha passato un consulente esterno.

Io non sono molto pratico di questo linguaggio e lo stò imparando pian piano, quindi vi chiedo scusa subito per le stupidate che stò dicendo / facendo.

L'applicazione è molto semplice e gira in una shell, e la modifica che devo implementare io ancora più semplice se non che non funziona :(.

Quello che devo fare è attivare un file di lock che viene creato all'avvio del programma per evitare di avere + esecuzioni di questo programma in contemporanea.

Ora la creazione e il test se il file esiste sono riuscito a farli, quello che non mi funziona è la cancellazione del file, continua a darmi "Impossibile cancellare il file perchè in uso da un'altro processo".


Questo è il codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie per l'aiuto.

AntCiar Profilo | Expert

Ciao. Se il problema sta nel controllare se la tua applicazione risulta già avvita, puoi utilizzare invece della creazione e della cancellazione di un file, il seguente codice che accede direttamente all'elenco dei processi attivi.

Incolla questo codice nel file Program.

static bool PrevInstance()
{
Process pcur = Process.GetCurrentProcess();
foreach (Process p in Process.GetProcesses())
{
if (pcur.Id != p.Id)
{
if (pcur.ProcessName.ToUpper() == p.ProcessName.ToUpper())
{
if (pcur.SessionId.ToString().ToUpper() == p.SessionId.ToString().ToUpper())
{
return false;
}
}
}
}
return true;
}



poi nella Main scrivi

if (! PrevInstance())
{
Application.Run(new ......);
}
else
{
Messagebox.Show("Sessione già in uso");
}

ciao

loziopigna Profilo | Newbie

Grazie mille per il consiglio, lo provo subito
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5