Sto selezionando il file da openfiledialoge e visualizzandolo nella casella immagine e il suo nome nella casella di testo quando faccio clic sul pulsante delete
Ricevo l'eccezione The process cannot access the file because it is being used by another process.
Ho cercato molto per questa eccezione per essere risolto ma io non ha funzionato nessuno di loro lavorando, quando ho provato a chiudere il file con imagename che è in textbox cioè il file che sto visualizzando in picturebox; utilizzando IsFileLocked
metodo, questo si chiude ed elimina tutti i file di particolare percorso di directory, ma come posso eliminare l'unico file mostrato in picturebox, dove sto andando maleEliminazione di file che viene visualizzato nella casella immagine
public partial class RemoveAds : Form
{
OpenFileDialog ofd = null;
string path = @"C:\Users\Monika\Documents\Visual Studio 2010\Projects\OnlineExam\OnlineExam\Image\"; // this is the path that you are checking.
public RemoveAds()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (System.IO.Directory.Exists(path))
{
ofd = new OpenFileDialog();
ofd.InitialDirectory = path;
DialogResult dr = new DialogResult();
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Image img = new Bitmap(ofd.FileName);
string imgName = ofd.SafeFileName;
txtImageName.Text = imgName;
pictureBox1.Image = img.GetThumbnailImage(350, 350, null, new IntPtr());
ofd.RestoreDirectory = true;
}
}
else
{
return;
}
}
private void button2_Click(object sender, EventArgs e)
{
//Image img = new Bitmap(ofd.FileName);
string imgName = ofd.SafeFileName;
if (Directory.Exists(path))
{
var directory = new DirectoryInfo(path);
foreach (FileInfo file in directory.GetFiles())
{ if(!IsFileLocked(file))
file.Delete();
}
}
}
public static Boolean IsFileLocked(FileInfo path)
{
FileStream stream = null;
try
{ //Don't change FileAccess to ReadWrite,
//because if a file is in readOnly, it fails.
stream = path.Open (FileMode.Open, FileAccess.Read, FileShare.None);
}
catch (IOException)
{ //the file is unavailable because it is:
//still being written to or being processed by another thread
//or does not exist (has already been processed)
return true;
}
finally
{
if (stream != null)
stream.Close();
}
//file is not locked
return false;
}
}
Grazie in anticipo per qualsiasi aiuto
Sto salvando l'immagine utilizzando un altro modulo, quindi è necessario disporre l'immagine dopo averla salvata anche o solo al momento del recupero e dell'eliminazione? – Durga
@Durga Non capisco cosa intendi. Se hai un'altra domanda, pubblicare un'altra domanda è l'opzione migliore: mostra il codice di cui stai parlando. In questo caso (sopra) viene collocata la variabile locale 'img' - l'istanza dell'oggetto' Bitmap', non il file da cui è stato creato. Non lo usi più tardi perché è una variabile locale e non rientra nell'ambito. –
ho capito quello che lei ha spiegato, è la risposta molto pulito e ben spiegato, ottenuto esattamente come lo shold faccio in modo corretto Grazie mille – Durga