前几天我试着问这个问题,并且承认没有好好说出问题或者首先发布代码,答案已经结束了.所以我在这里再试一次,因为老实说这让我很快就疯了.:)
我正在尝试实现这个Address Parser,它最初是一个基于控制台的c#程序.我已成功将其转换为独立的WPF程序,该程序仅包含TextBoxfor输入,a Button用于激活解析,以及TextBlock用于显示结果.在写这篇文章时,我确实将输出截断为我在主程序中需要的内容,但它仍能正常工作.我在下面列出了整个代码.
我的下一步是把它移植到我的主程序中,我通过字面意思使用复制/粘贴.然而,在运行此按钮后,程序会在按下按钮后挂起.最终VS给出了一个错误,即进程已经过长而没有抽出消息,并且TaskManager中的内存使用量从~70k逐渐增加到3,000,000.为此,我将该Parsing方法分配给后台工作者,希望减轻主进程的工作量.这确实解决了程序冻结,但后台线程只是做了同样的事情,提高了RAM使用率并且什么也没有返回.
所以现在我陷入了僵局.我知道问题出现在var result = parser.ParseAddress(input);语句中的某个地方,因为当为每行代码使用断点时,这是最后一个要触发的行.但基本上我不知道为什么这会导致一个WPF程序出现问题,而不是另一个.
如果有必要,我会非常乐意在某个地方发布主程序的完整源代码,但我无法想象在这里发布大约20个不同的类文件和项目代码是个好主意.:)
独立的WPF应用程序
namespace AddressParseWPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void Execute()
{
AddressParser.AddressParser parser = new AddressParser.AddressParser();
var input = inputTextBox.Text;
var result = parser.ParseAddress(input);
if (result == null)
{
outputTextBlock.Text = "ERROR. Input could not be parsed.";
}
else
{
outputTextBlock.Text …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
protected string formatException(Exception e)
{
var exError = "<form>";
if (e == null)
{
throw new ArgumentNullException("e");
}
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse message</span>" +
"<span class='show-collapsed'>expand message</span>" +
"</a></legend><p>" + e.Message + "</p></fieldset>";
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse trace</span>" +
"<span class='show-collapsed'>expand trace</span>" +
"</a></legend><p>" + e.StackTrace + "</p></fieldset>";
if (e.InnerException != null)
{
// same functionality but for the inner exception and the InnerException.InnerException
}
return exError + "</form>";
}
Run Code Online (Sandbox Code Playgroud)
调用时它会格式化异常消息。不过我想让它包括InnerException和 …
我有一个MemoryStream在运行时从文件创建的。
然后对其MemoryStream进行编辑并删除一些字节。
现在我必须维护一个恒定的文件大小,所以我必须MemoryStream用 0xFF 字节填充..
执行此操作最快的方法是什么?
我知道,我总是可以循环遍历MemoryStream大小并添加 0xFF,但我需要知道一种更快、更有效的方法来做到这一点!
我正在编写一个应用程序来读取和解析文件大小为1 KB到200 MB.
我要解析两次......
提取文件中包含的图像.
解析该图像提取图像的内容.
我通常使用文件流,缓冲流,二进制读取器和二进制写入器来读取和写入内容.
现在,我想知道读取文件和提取内容的最快,最有效的方法......
有好的方法还是好的班级图书馆?
注意:不安全的代码没问题!
可能重复:
C#"as"施放vs经典施法
这两个表达式有什么区别?
(ListView)sendersender as ListView一般来说,我通常使用exp sender as ListView.但在SO中我发现大多数时候用户使用(ListView)sender.
所以,我想知道哪一个更有效率.
要么,
如果它是编码器的选择,使用哪一个[并且两者的工作方式相同]?