【问题标题】:Error reading a file and updating a label读取文件和更新标签时出错
【发布时间】:2014-04-23 01:20:48
【问题描述】:

这是我正在使用的代码:

p = new Process();
p.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "\\scan.cmd";
p.Start();
p.WaitForExit();
// Read the file and display it line by line.
string line;
System.IO.StreamReader file = new System.IO.StreamReader("\\log.txt");
while((line = file.ReadLine()) != null)
{
    itemBeiingScanned_Label.Content = line;
}

file.Close();

在构建时,它会运行所有内容,然后抛出两个措辞相同的未处理异常:

例外:

在 PresentationFramework.dll 中发生了“System.Windows.Markup.XamlParseException”类型的第一次机会异常

附加信息:在类型 'SpywareKing.MainWindow' 上调用与指定绑定约束匹配的构造函数会引发异常。

如果有这个异常的处理程序,程序可以安全地继续。

任何见解都将不胜感激 - 如果您需要帮助找出问题的根源,我可以提供更多信息。

以下是来自 Visual Studio 调试控制台的一些可能有用的信息:

“SpywareKing.vshost.exe”(CLR v4.0.30319:SpywareKing.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.Aero2\v4.0_4.0.0.0__31bf3856ad364e35\ PresentationFramework.Aero2.dll'。已加载符号。 mscorlib.dll 中出现了“System.IO.FileNotFoundException”类型的第一次机会异常 mscorlib.dll 中发生了“System.Reflection.TargetInvocationException”类型的第一次机会异常 mscorlib.dll 中发生了“System.Reflection.TargetInvocationException”类型的第一次机会异常 System.Xaml.dll 中出现“System.Xaml.XamlObjectWriterException”类型的第一次机会异常 PresentationFramework.dll 中出现“System.Windows.Markup.XamlParseException”类型的第一次机会异常 附加信息:对与指定绑定约束匹配的“SpywareKing.MainWindow”类型的构造函数的调用引发了异常。

线程 0x33dc 已退出,代码为 0 (0x0)。 PresentationFramework.dll 中出现“System.Windows.Markup.XamlParseException”类型的未处理异常 附加信息:对与指定绑定约束匹配的“SpywareKing.MainWindow”类型的构造函数的调用引发了异常。

程序“[13492] SpywareKing.vshost.exe”已退出,代码为 0 (0x0)。

【问题讨论】:

  • 粘贴您的 XAML。问题不在您显示的代码中。
  • 检查内部异常是否有实际错误。
  • 你认为这意味着什么:A first chance exception of type 'System.IO.FileNotFoundException' occurred

标签: c# .net wpf io streamreader


【解决方案1】:

很可能是一行

System.IO.StreamReader file = new System.IO.StreamReader("\\log.txt");

是错误的原因。您不能安全地假定当前目录是日志文件所在的目录。始终指定完整路径。

string logFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log.txt")
System.IO.StreamReader file = new System.IO.StreamReader(logFie);

当用户在 FileOpenDialog 或 FileSaveDialog 中选择目录时,当前目录可以随时更改。它不会自动成为应用程序目录。调试时应用程序目录也将是\SolutionFolder\ProjectFolder\bin\Debug。这是您要查找的目录吗?

【讨论】:

  • 谢谢,我可以稍微调整一下:string logFile = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";字符串线; System.IO.StreamReader 文件 = new System.IO.StreamReader(logFile);
  • Path.Combine() 具有在需要时自动修复(添加或删除)反斜杠 (\) 的优势。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2015-04-08
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多