【发布时间】:2017-08-21 10:04:27
【问题描述】:
我正在尝试创建一个临时文件,对其进行写入、打印,然后将其删除。这是我的代码:
string filePathReceipt = Path.GetTempFileName();
try {
using (FileStream fs = new FileStream(filePathReceipt, FileMode.Open)) {
File.WriteAllText(filePathReceipt, dataToBeWritten.ToString());
}
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
//Printing receipt: start
ProcessStartInfo psi = new ProcessStartInfo(filePathReceipt);
psi.Verb = "PRINT";
try {
Process.Start(psi);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
//Printing receipt: end
if (File.Exists(filePathReceipt)) {
//Delete the file after it has been printed
File.Delete(filePathReceipt);
}
我收到异常消息:
无法写入,因为它已被另一个进程使用。
编辑#2:
我发现这有效:
string filePathReceipt = AppDomain.CurrentDomain.BaseDirectory + @"receipt.txt";
虽然这会产生异常:string filePathReceipt = Path.GetTempFileName();
完整的当前代码:
//string filePathReceipt = AppDomain.CurrentDomain.BaseDirectory + @"receipt.txt";
string filePathReceipt = Path.GetTempFileName();
File.WriteAllText(filePathReceipt, dataToBeWritten.ToString());
ProcessStartInfo psi = new ProcessStartInfo(filePathReceipt);
psi.Verb = "PRINT";
try {
using (Process p = Process.Start(psi))
p.WaitForExit();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
if (File.Exists(filePathReceipt)) {
//Delete the file after it has been printed
File.Delete(filePathReceipt);
}
【问题讨论】:
-
您可能需要等待进程完成才能尝试删除文件
-
要创建文件,您需要使用
FileMode.Create。
标签: c#