• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C#多线程编程实例-线程与窗体交互的代码分析

c# 搞代码 4年前 (2022-01-09) 28次浏览 已收录 0个评论

C#多线程编程实例 线程与窗体交互

代码:

    public partial class Form1 : Form    {        //声明线程数组        Thread[] workThreads = new Thread[10];        public Form1()        {       <a style="color:transparent">本文来源gao($daima.com搞@代@#码$网</a>     InitializeComponent();        }        //此委托允许异步的调用为Listbox添加Item        delegate void AddItemCallback(string text);        //这种方法演示如何在线程安全的模式下调用Windows窗体上的控件。        private void AddItem(string text)        {            if (this.listBox1.InvokeRequired)            {                AddItemCallback d = new AddItemCallback(AddItem);                this.Invoke(d, new object[] { text });            }            else            {                this.listBox1.Items.Add(text);            }        }        //数据采集方法        public void DataGet()        {            while (true)            {                AddItem("ok");                Thread.Sleep(1000);            }            //如果此方法退出了,那么这个线程也就退出了        }        /// <summary>        /// 启动线程        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button1_Click(object sender, EventArgs e)        {            //循环创建并启动线程执行            for (int i = 0; i < workThreads.Length; i++)            {                if (workThreads[i] == null)                {                    //如果线程不存在,则创建                    workThreads[i] = new Thread(new ThreadStart(DataGet));                    workThreads[i].Name = i.ToString();                    workThreads[i].Start();                }                else                {                    //已经存在,如果没有运行,则启动                    if (workThreads[i].ThreadState == ThreadState.Aborted || workThreads[i].ThreadState == ThreadState.Stopped)                    {                        workThreads[i] = new Thread(new ThreadStart(DataGet));                        workThreads[i].Name = i.ToString();                        workThreads[i].Start();                    }else{                        workThreads[i].Start();                    }                }            }        }        /// <summary>        /// 停止线程        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button2_Click(object sender, EventArgs e)        {            //循环停止线程执行            for (int i = 0; i < workThreads.Length; i++)            {                //如果线程存在,并且状态不是停止也不是终止的,则终止该线程                if (workThreads[i] != null && workThreads[i].ThreadState != ThreadState.Stopped && workThreads[i].ThreadState != ThreadState.Aborted)                {                    workThreads[i].Abort();                }            }        }

以上就是C#多线程编程实例-线程与窗体交互的代码分析的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#多线程编程实例-线程与窗体交互的代码分析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址