• C# 多线程 异步加载 窗体


    C# 多线程 异步加载 窗体

    2014年05月28日 16:57:08 狂奔小蜗牛 阅读数:10709

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gongzhe2011/article/details/27351853


    我们在使用 windowform 编程的时候,我们或许可能会越到,各种在窗体加载的时候,会进行其他的操作:

    1.若是在加载之前,操作---》整个界面出来的很慢,而且若是时间长的话,页面很久才能出来,

    2.若是写在加载之后处理的话,虽然界面出来了,这个时候,出现了假死的状体。但是不能乱点,一点,就有卡死的现象。

    现在我们利用异步,和多线程来控制,并且加上进度条。来做一个界面加载的时候出现很大操作。

    示例:

    using System.Windows.Forms;
    
    using System.Threading;
    
    using System;
    
    
    namespace Threaddemo1
    
    {
    
    public partial class Form1 : Form {
    
       public Form1() {
    
          InitializeComponent();
    
       }
    
    delegate void aa(string s);//创建一个代理
    
    
    private void Form1_Load(object sender, EventArgs e)
    
    {
    
    Thread newthread = new Thread(new ThreadStart(ttread));
    
    newthread.Start();
    
    }
    
    void ttread()
    
    {
    
    pri("77");
    
    }
    
    private delegate void ProgressBarShow(int i);
    
    private void pri(string p)
    
    {
    
    bool name = richTextBox1.InvokeRequired;
    
    //MessageBox.Show(name.ToString());
    
    if (!richTextBox1.InvokeRequired)//判断是否需要进行唤醒的请求,如果控件与主线程在一个线程内,可以写成if(!InvokeRequired)
    
    {
    
    Loadthread();
    
    }
    
    else
    
    {
    
    // MessageBox.Show("不是同一个线程");
    
    aa a1 = new aa(pri);
    
    Invoke(a1, new object[] { p });//执行唤醒操作
    
    }
    
    }
    
    
    private void Loadthread()
    
    {
    
    string s = string.Empty;
    
    for (int b = 0; b < 10000; b++)
    
    {
    
    this.ShowPro(b);
    
    s += b.ToString();
    
    }
    
    //MessageBox.Show("同一线程内");
    
    LoadRichebox(s);
    
    }
    
    void send() {
    
    Thread.CurrentThread.Abort();
    
    }
    
    private void LoadRichebox(string s)
    
    {
    
    richTextBox1.Text = s;
    
    }
    
    private void ShowPro(int value)
    
    {
    
    if (this.InvokeRequired)
    
    {
    
    this.Invoke(new ProgressBarShow(ShowPro), value);
    
    }
    
    else
    
    {
    
    this.progressBar1.Value = value;
    
    this.label1.Text = value + "% Processing...";
    
    }
    
    }
    
    }
    
    }


     

  • 相关阅读:
    第四次作业
    第三次作业
    第二次作业。
    国庆作业。
    实验2-4
    实验2-3
    实验2-2
    实验2-1
    实验1-3
    实验 1-1
  • 原文地址:https://www.cnblogs.com/grj001/p/12225634.html
Copyright © 2020-2023  润新知