小编use*_*252的帖子

在C#中读/写文本文件进度条

我有一个函数,它读取一个大文本文件,拆分一个部分(从给定的开始和结束),并将拆分的数据保存到另一个文本文件.因为文件太大,我需要在读取流时添加进度条将分割文本写入另一个文件时另一个.Ps.start和end给出datetime !!

using (StreamReader sr = new StreamReader(file,System.Text.Encoding.ASCII))
{
    while (sr.EndOfStream == false)
    {
        line = sr.ReadLine();

        if (line.IndexOf(start) != -1)
        {
            using (StreamWriter sw = new StreamWriter(DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + "cut"))
            {
                sw.WriteLine(line);
                while (sr.EndOfStream == false && line.IndexOf(end) == -1)
                {
                    line = sr.ReadLine();
                    sw.WriteLine(line);
                }
            }

            richTextBox1.Text += "done ..." + "\n";
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# winforms progress-bar

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

如何在C#中将数组作为doWork的参数传递

我需要在readstream函数中使用comboBox1.text和comboBox2.Text等表单控件,这会传递一条错误消息(翻译自德语):

控制元素comboBox1/comboBox2的访问来自另一个线程,而不是创建它的线程!

我需要的是将这些控件传递给readstream函数,但我不知道究竟是怎么回事.

码

private void button1_Click(object sender, EventArgs e)
{
    BackgroundWorker worker = new BackgroundWorker;
    worker.WorkerReportsProgress = true;
    worker.ProgressChanged += ProgressChanged;
    worker.DoWork += ReadStream;

    //Need to pass the comoBox Texts from here!!!
    string start = comboBox1.Text;
    string end = comboBox2.Text;
    worker.RunWorkerAsync();
}

private void ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    UpdateProgressBar(e.ProgressPercentage);
    comboBox1.Text = e.UserState.ToString();
}

private void ReadStream(object sender, DoWorkEventArgs doWorkEventArgs)
{
    BackgroundWorker worker = sender as BackgroundWorker;
    string line;
    //And use the values here !!!!
    using (StreamReader sr = …
Run Code Online (Sandbox Code Playgroud)

c# backgroundworker

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

标签 统计

c# ×2

backgroundworker ×1

progress-bar ×1

winforms ×1