C多线程编程总结

C多线程编程总结在 WinForm 开发中 我们通常不希望当窗体上点了某个按钮执行某个业务的时候 窗体就被卡死了 直到该业务执行完毕后才缓过来 一个最直接的方法便是使用多线程 多线程编程的方式在 WinForm 开发中必不可少 本文介绍在 WinForm 开发中如何使用多线程 以及在线程中如何通过 Control Invoke 方法返回窗体主线程执行相关操作 WinForm 多线程编程 1 newThrea

C多线程编程总结 private  void DoWork() {
C多线程编程总结            Thread t =  new Thread( new ThreadStart( this.DoSomething));
C多线程编程总结            t.Start();
C多线程编程总结        }
C多线程编程总结         private  void DoSomething() {
C多线程编程总结            MessageBox.Show( thread start );
C多线程编程总结        }





C多线程编程总结 private  void DoWork() {
C多线程编程总结            Thread t =  new Thread( new ParameterizedThreadStart( this.DoSomething));
C多线程编程总结            t.Start( guozhijian );
C多线程编程总结        }
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结            MessageBox.Show(o.ToString());
C多线程编程总结        }





C多线程编程总结 private  void DoWork() {
C多线程编程总结            ThreadPool.QueueUserWorkItem( new WaitCallback( this.DoSomething));
C多线程编程总结        }
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结            MessageBox.Show( thread start );
C多线程编程总结        }




C多线程编程总结 private  void DoWork() {
C多线程编程总结            ThreadPool.QueueUserWorkItem( new WaitCallback( this.DoSomething),  guozhijian );
C多线程编程总结        }
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结            MessageBox.Show(o.ToString());
C多线程编程总结        }




C多线程编程总结 private  void DoWork() {
C多线程编程总结             string name =  guozhijian ;
C多线程编程总结            ThreadPool.QueueUserWorkItem( new WaitCallback( delegate( object o){
C多线程编程总结                MessageBox.Show(name);
C多线程编程总结            }));
C多线程编程总结        }




C多线程编程总结 private  void DoWork() {
C多线程编程总结            WaitCallback wc =  new WaitCallback( this.DoSomething);
C多线程编程总结            ThreadPool.QueueUserWorkItem(wc,  Guozhijian );
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  delegate  void MyInvokeDelegate( string name);
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结             this.Invoke( new MyInvokeDelegate( this.ChangeText), o.ToString());
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  void ChangeText( string name) {
C多线程编程总结             this.textBox1.Text = name;
C多线程编程总结        }











 

C多线程编程总结 private  void DoWork() {
C多线程编程总结            WaitCallback wc =  new WaitCallback( this.DoSomething);
C多线程编程总结            ThreadPool.QueueUserWorkItem(wc,  Guozhijian );
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结             this.Invoke( new Action< string>( this.ChangeText), o.ToString());
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  void ChangeText( string name) {
C多线程编程总结             this.textBox1.Text = name;
C多线程编程总结        }










本例传递一个参数,System.Action有很多个重载,可以无参数(非泛型),而最多可以有四个参数,同样采用匿名方法,不使用泛型形式的System.Action,如下:

 

 

C多线程编程总结 private  void DoWork() {
C多线程编程总结            WaitCallback wc =  new WaitCallback( this.DoSomething);
C多线程编程总结            ThreadPool.QueueUserWorkItem(wc,  Guozhijian );
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结             this.Invoke( new Action( delegate() {
C多线程编程总结                 this.textBox1.Text = o.ToString();
C多线程编程总结            }));
C多线程编程总结        }








 

 

C多线程编程总结 private  void DoWork() {
C多线程编程总结            WaitCallback wc =  new WaitCallback( this.DoSomething);
C多线程编程总结            ThreadPool.QueueUserWorkItem(wc,  Guozhijian );
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  void DoSomething( object o) {
C多线程编程总结            System.Func< stringint> f =  new Func< stringint>( this.GetId);
C多线程编程总结             object result =  this.Invoke(f,o.ToString());
C多线程编程总结            MessageBox.Show(result.ToString());
C多线程编程总结        }
C多线程编程总结
C多线程编程总结         private  int GetId( string name) {
C多线程编程总结             this.textBox1.Text = name;
C多线程编程总结             if (name ==  Guozhijian ) {
C多线程编程总结                 return  999;
C多线程编程总结            }
C多线程编程总结             else {
C多线程编程总结                 return  0;
C多线程编程总结            }
C多线程编程总结        }


















 

 

本文例中都是用this来引用,这里this替换为窗体任何一个控件的句柄都是OK的,因为Control.Invoke含义是将方法委托给拥有该Control的线程去执行。

 

很不错的文章。想当时自己学习多线程的时候绕了很久。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209230.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:44
下一篇 2026年3月19日 上午9:44


相关推荐

  • 无尽的忙碌换来幸福的日子「建议收藏」

    人总是忙碌的,从小要读书,长大了工作,结婚了,有孩子了,一辈子也可能等到孩子成家了才能稍微休息一下下吧,不过有时候想想,忙碌点好,一辈子也就那么长,等闭了后还能休息好久好久呢,何不忙碌点呢。从过年以后,一直忙碌着,忙撒呢,上班忙新网站改版,下班忙结婚,周末也忙结婚,几乎一天都没有消停过,老婆无数次问我累不累,我说不累,再累也觉得幸福,嘿嘿。感叹了一下,好久也没来了,最近工作上呢刚赶出来一个…

    2022年4月13日
    34
  • 卡帕西大模型横评方法太好玩!四大AI匿名参赛评分,最强出乎意料

    卡帕西大模型横评方法太好玩!四大AI匿名参赛评分,最强出乎意料

    2026年3月15日
    1
  • java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]

    java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]//显示进程Processprocess=Runtime.getRuntime().exec(“tasklist”);Scannerin=newScanner(process.getInputStream());while(in.hasNextLine()){Stringp=in.nextLine();//打印所有进程System.out.println(p);if(p.contain…

    2022年6月2日
    43
  • win10关闭135 139 445端口_windows中如何关闭端口

    win10关闭135 139 445端口_windows中如何关闭端口关闭445端口-首先进入系统的”注册表编辑器“,步骤是:依次点击”开始“,”运行“,输入regedit进入”注册表编辑器“。之后依次点击注册表选项”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters“,进入NetBT这个服务的相关注册表项。在Parameters这个子项的右侧,点击鼠标右键,“新建”,“QWORD(64位)值”,然后重命名为“SMBDeviceEnabled”,再把这个子键的值改为0你还要做的就是

    2022年10月16日
    5
  • 怎样去除悬针纹 小妙招轻松赶走悬针纹_额头悬针纹有什么说法

    怎样去除悬针纹 小妙招轻松赶走悬针纹_额头悬针纹有什么说法其实纹路和我们每个人的心情也是有关系的,如果一个人经常愁眉苦脸,就会“相由心生”,长出烦恼线来,悬针纹也就来了。那么究竟悬针纹是什么呢?悬针纹化解方法有哪些呢?悬针纹怎么去除比较好呢?悬针纹是什么

    2022年8月4日
    9
  • CSS加JS实现网页返回顶部功能

    CSS加JS实现网页返回顶部功能最近在设计自己的博客,前端页面在内容很多的时候往下拖动会有滚动条。通常我们都需要一个返回顶部的功能来实现快速来到网页顶部。当然实现方式不止一种,这里我采用的最实用的一种。使用CSS+Jquery方式代码量相对较少,容易理解。实现原理1.我们需要再DOM中添加自己的DIV,里面包含一个a标签,a标签里面包含两个img标签用于存放返回顶部的图片。2.添加必要的CSS样式3.然后…

    2022年7月15日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号