TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Manesh Borase
NA
1
11.5k
The process can not access the file because it is being used by another process
Mar 29 2010 12:27 PM
Hi friends,
I am creating one small application.
In that I am sending the mail with attachments.
After sending the mail I want to move that attachment files (present on hard drive) to another location in my hard drive.
But whhen I do this, it gives me the exception as shown below,
The process can not access the file because it is being used by another process.
To solve this problem I have written the following code:
private void SendPreviousUnsentFiles()
{
string status = Emailer.SendMessageWithAttachment(sendTo, sendFrom, sendSubject, sendMsgBody, sendAttachments);
if (status.Equals("101"))
{
//System.Threading.Thread.Sleep(50000);
System.DateTime dt = System.DateTime.Now + new TimeSpan(0, 5, 0);
foreach (string strFile in sendAttachments)
{
try
{
string strFileName = strFile.Substring(strFile.LastIndexOf('\\'));
//while (FileInUse(strFile))
//{
// Thread.Sleep(1000);
// if (dt < System.DateTime.Now)
// {
// MyMessageBox.ShowBox("Original report files not moved to sent items.", "Email Status", MyMessageBox.MyMessageBoxButton.OK, MyMessageBox.MyMessageBoxIcon.Information);
// return;
// }
//}
File.Move(strFile, LocalResources.processedInfoDirectory + "Sent Mails" + strFileName);
}
catch (Exception ex)
{
MyMessageBox.ShowBox("Error in moving file due to " + ex.Message, "Error", MyMessageBox.MyMessageBoxButton.OK, MyMessageBox.MyMessageBoxIcon.Error);
}
}
status = "Old De-identification status reports successfully sent to " + sendTo + " at " + System.DateTime.Now.ToString() + ".";
MyMessageBox.ShowBox(status, "Email Status", MyMessageBox.MyMessageBoxButton.OK, MyMessageBox.MyMessageBoxIcon.Information);
}
else
{
MyMessageBox.ShowBox(status, "Email Status", MyMessageBox.MyMessageBoxButton.YesNo, MyMessageBox.MyMessageBoxIcon.Error);
}
}
static bool FileInUse(string path)
{
try
{
//Just opening the file as open/create
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
{
//If required we can check for read/write by using fs.CanRead or fs.CanWrite
}
return false;
}
catch (IOException ex)
{
//check if message is for a File IO
if (ex.Message.ToString().Contains("The process cannot access the file"))
return true;
else
throw;
}
}
But it is taking lot of time to do the processing (moving).
Please help me to resolve this problem.
Reply
Answers (
1
)
Help me! IErrorInfo.GetDescription failed with E_FAIL(0x80004005)
UpdatePanel Trigger registration for dynamic controls is IMPOSSIBLE!