小编Wri*_*ick的帖子

大型RegEx匹配导致程序挂起

前几天我试着问这个问题,并且承认没有好好说出问题或者首先发布代码,答案已经结束了.所以我在这里再试一次,因为老实说这让我很快就疯了.:)

我正在尝试实现这个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)

c# regex wpf parsing

4
推荐指数
1
解决办法
1902
查看次数

如何进行此调用以递归记录我的异常?

我有以下代码:

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和 …

c# exception inner-exception

4
推荐指数
1
解决办法
2865
查看次数

如何用 0xFF 字节填充 MemoryStream?

我有一个MemoryStream在运行时从文件创建的。

然后对其MemoryStream进行编辑并删除一些字节。

现在我必须维护一个恒定的文件大小,所以我必须MemoryStream用 0xFF 字节填充..

执行此操作最快的方法是什么?

我知道,我总是可以循环遍历MemoryStream大小并添加 0xFF,但我需要知道一种更快、更有效的方法来做到这一点!

c# memorystream padding

3
推荐指数
1
解决办法
2886
查看次数

最快的阅读二进制文件读写

我正在编写一个应用程序来读取和解析文件大小为1 KB到200 MB.

我要解析两次......

  1. 提取文件中包含的图像.

  2. 解析该图像提取图像的内容.

我通常使用文件流,缓冲流,二进制读取器和二进制写入器来读取和写入内容.

现在,我想知道读取文件和提取内容的最快,最有效的方法......

有好的方法还是好的班级图书馆?

注意:不安全的代码没问题!

c# parsing file

2
推荐指数
1
解决办法
1万
查看次数

"(ListView)发件人"与"发件人作为ListView"

可能重复:
C#"as"施放vs经典施法

这两个表达式有什么区别?

  • (ListView)sender
  • sender as ListView

一般来说,我通常使用exp sender as ListView.但在SO中我发现大多数时候用户使用(ListView)sender.

所以,我想知道哪一个更有效率.

要么,

如果它是编码器的选择,使用哪一个[并且两者的工作方式相同]?

c# casting sender

1
推荐指数
2
解决办法
1468
查看次数

标签 统计

c# ×5

parsing ×2

casting ×1

exception ×1

file ×1

inner-exception ×1

memorystream ×1

padding ×1

regex ×1

sender ×1

wpf ×1