Я пытаюсь удалить файл после его создания, но просто не могу.Сообщение об ошибке состоит в том, что он все еще используется процессом.Я работаю над приложением winform.
Вот мой код:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(xmlDec);
XmlElement elmRoot = xmlDoc.CreateElement("testConfig");
xmlDoc.AppendChild(elmRoot);
GetConfigTags(xmlDoc, elmRoot, clientToken);
StreamWriter wText =
new StreamWriter(CommonCodeClass.configLocation + "EmailConfig.xml");
xmlDoc.Save(wText);
wText.Flush();
wText.Close();
wText.Dispose();
File.Delete(CommonCodeClass.configLocation + "EmailConfig.xml");
Я также пробовал код ниже, но та же ошибка, файл используется другим процессом
try
{
File.Delete(CommonCodeClass.configLocation + "EmailConfig.xml");
}
catch //or maybe in finally
{
GC.Collect(); //kill object that keep the file. I think dispose will do the trick as well.
Thread.Sleep(500); //Wait for object to be killed.
File.Delete(CommonCodeClass.configLocation + "EmailConfig.xml"); //File can be now deleted
log.Error(CommonCodeClass.configLocation + "EmailConfig.xml" + " was deleted forcefully as it was being used by the process.");
}
Я где-нибудь пропускаю закрытие файла?
Пожалуйста, помогите.Спасибо.
вот код для getconfigtag: он просто создает теги для применения в файле конфигурации.
internal static void GetConfigTags(XmlDocument xmlDoc, XmlElement elmRoot, string clientToken)
{
// Username Element
XmlElement elmUsername = xmlDoc.CreateElement(CommonCodeClass.xml_Username);
XmlAttribute xaUsername = xmlDoc.CreateAttribute("val");
xaUsername.Value = "singleVal";
elmUsername.InnerXml = "";
elmUsername.Attributes.Append(xaUsername);
elmRoot.AppendChild(elmUsername);
}
StackTrace:
в системе.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) в System.IO.File.Delete (String path) в ShareMgmt.CommonCodeClass.EmailTheConfigFile (String userEmail, String clientToken) в C: \ Users \ ddsds \ Documents \ Visual Studio2008 \ Projects \ ShareMgmt \ Mgmt \ CommonCodeClass.cs: строка 756 в ShareMgmt.UsersForm.btnConfigToAdmin_Click (отправитель объекта, EventArgs e) в C: \ Users \ ddsds \ Documents \ Visual Studio 2008 \ Projects \ ShareMgmt \ Mgmt \ UsersForm.cs: строка 1122