zoukankan      html  css  js  c++  java
  • 在后台线程中,从文件一行行异步加载内容进RichTextBox

    XAML文件

    XAML文件Code
    <Grid>
        <!--一个RichTextBox读取文件中的内容-->
        <RichTextBox x:Name="LoadFileBox" Visibility="Collapsed"></RichTextBox>
        <TextBlock x:Name="CountBox" Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="60"/>
        <TextBlock x:Name="TotalBox" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="30"/>
    </Grid>
    
    C#代码
    C#代码
            public MainWindow()
            {
                InitializeComponent();
                ComputeTotal();
                Task.Factory.StartNew(() =>
                {//开辟一个后台线程
                    LoadFileAsync();
                });
                
            }
            /// <summary>
            /// 计算总行数
            /// </summary>
            private void ComputeTotal()
            {
                int count = 0;
                using (var fs = new FileStream(@"D:\work\记事本项目WPF\1.txt", FileMode.Open))
                using (var reader = new StreamReader(fs))
                {
                    while (reader.Peek() > 0)
                    {
                        string line = reader.ReadLine();//异步读
                        if (line != null)
                        {
                            count++;
                        }
                    }
                    TotalBox.Text = "总数:" + count;
                }
            }
            /// <summary>
            /// 异步加载文件内容到RichTextBox
            /// </summary>
            async void LoadFileAsync()
            {
                int count = 0;
                using (var fs = new FileStream(@"D:\work\记事本项目WPF\1.txt", FileMode.Open))
                using (var reader = new StreamReader(fs))
                {
                    while (reader.Peek() > 0)
                    {
                        string line = await reader.ReadLineAsync();//异步读
                        if (line != null)
                        {
                            Dispatcher.Invoke(new Action(() =>
                            {
                                count++;
                                CountBox.Text = "当前解析到: " + count;
                                LoadFileBox.Document.Blocks.Add(new Paragraph(new Run(line)));
                            }));
                        }
                    }
                }
                Dispatcher.Invoke(() =>
                {
                    CountBox.Visibility = Visibility.Collapsed;
                    TotalBox.Visibility = Visibility.Collapsed;
                    LoadFileBox.Visibility = Visibility.Visible;
                });
            }
    
  • 相关阅读:
    获取N年,N月,N日后或者前的日期函数
    ABAP 上传图片
    SF 小技巧
    针式打印机问题
    ABAP 捕获回车键
    md04 取数函数
    根据选择屏幕创建12个月份
    php isset 的作用
    php 指针概念 指针引用
    php中global与$GLOBALS的用法及区别
  • 原文地址:https://www.cnblogs.com/luna2333/p/15563301.html
Copyright © 2011-2022 走看看