1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Threading; //线程操作的类在这个命名空间下.
  11.  
  12. namespace C02多线程
  13. {
  14. public partial class Form1 : Form
  15. {
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. //关闭控件的跨线程访问检查
  20. TextBox.CheckForIllegalCrossThreadCalls = false;
  21. }
  22.  
  23. private void button1_Click(object sender, EventArgs e)
  24. {
  25. int sum = 0;
  26. for (int i = 0; i < 999999999; i++)
  27. {
  28. sum += i;
  29. }
  30.  
  31. MessageBox.Show("ok");
  32. }
  33.  
  34. private void button2_Click(object sender, EventArgs e)
  35. {
  36. //创建1个线程对象 并为这个线程对象指定要执行的方法.
  37. Thread thread = new Thread(TestThread);
  38. //设置线程为后台线程.
  39. thread.IsBackground = true;
  40. //开启线程
  41. thread.Start();
  42.  
  43. //线程默认情况下都是前台线程.
  44. //要所有的前台线程退出以后 程序才会退出.
  45. //后台线程 只要所有的前台线程结束 后台线程就会立即结束.
  46. //进程里默认的线程我们叫做主线程或者叫做UI线程.
  47. //线程什么时候结束 该线程执行的方法执行完以后 线程就自动退出.
  48.  
  49. //多个线程访问同一资源 可能造成不同步的情况. 这个叫做 线程重入.
  50. //th.Abort(); 强行停止线程.
  51. //Thread.Sleep(1000);//将当前线程暂停 单位毫秒
  52. //Thread.CurrentThread;得到当前线程的引用
  53.  
  54. //线程调用带参数的方法
  55. //创建1个ParameterizedThreadStart委托对象.为这个委托对象绑定方法.
  56. //将委托对象通过构造函数传入线程对象
  57. //启动线程的时候调用Start()的重载 将参数传入.
  58. }
  59.  
  60. //准备让线程去调用.
  61. private void TestThread()
  62. {
  63. int sum = 0;
  64. for (int i = 0; i < 999999999; i++)
  65. {
  66. sum += i;
  67. }
  68. MessageBox.Show("ok");
  69. }
  70.  
  71. private void CountNunm()
  72. {
  73. //使用lock加锁 请联想你上厕所的情况
  74. lock (this)
  75. {
  76. for (int i = 0; i < 10000; i++)
  77. {
  78. int num = int.Parse(textBox1.Text.Trim());
  79. num++;
  80. //Thread.Sleep(500);//将当前线程暂停
  81. // Thread.CurrentThread.Abort();
  82. //Thread th = Thread.CurrentThread;
  83. //th.Abort();
  84. //if (num == 5000)
  85. //{
  86. // th.Abort();
  87. //}
  88. textBox1.Text = num.ToString();
  89. }
  90. }
  91. }
  92. Thread th;
  93. private void button3_Click(object sender, EventArgs e)
  94. {
  95. th = new Thread(CountNunm);
  96. th.Name = "哈哈线程";
  97. th.IsBackground = true;
  98.  
  99. th.Start();
  100.  
  101. //Thread th1 = new Thread(CountNunm);
  102. //th1.IsBackground = true;
  103. //th1.Start();
  104. }
  105.  
  106. private void button4_Click(object sender, EventArgs e)
  107. {
  108. //ThreadStart s = new ThreadStart(CountNunm);
  109. //Thread th = new Thread(CountNunm);
  110. ParameterizedThreadStart s = new ParameterizedThreadStart(TestThreadParsms);
  111. Thread t = new Thread(s);
  112. t.IsBackground = true;
  113. t.Start("你好啊");
  114. }
  115.  
  116. private void TestThreadParsms(object obj)
  117. {
  118. Console.WriteLine(obj.ToString());
  119. }
  120.  
  121. }
  122. }

C# 多线程 简单使用方法以及常用参数的更多相关文章

  1. PHP命令行执行程序php.exe使用及常用参数

    PHP命令行执行程序php.exe参数说明 -f <file>:以命令行方式运行指定的PHP文件,只要指定具体的PHP文件(带绝对路径),php.exe就可以执行PHP文件,所以这个参数单 ...

  2. Bootstrap modal常用参数、方法和事件

    Bootstrap modal(模态窗)常用参数.方法和事件: 参数: 名称 类型 默认值 描述 Backdrop Boolean或字符串“static” True True:有背景,点击modal外 ...

  3. jQuery选择器总结 jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法

    新年第一编文章 jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法   $("#myELement")    选择id值等于myElement的元素,id值 ...

  4. Java线程池使用和常用参数

    多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 ...

  5. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    转自http://www.rowkey.me/blog/2016/11/02/java-profile/?hmsr=toutiao.io&utm_medium=toutiao.io&u ...

  6. Java Native Interface 五 JNI里的多线程与JNI方法的注册

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI里的多线程 在本地方法里写有关多线程的 ...

  7. Production环境中iptables常用参数配置

    production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...

  8. find常用参数详解

    find常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux系统中,在init 3模式情况下都是命令行模式,这个时候我们想要找到一个文件的就得依赖一个非常好用的 ...

  9. swfobject.js 2.2简单使用方法

    swfobject.js 2.2简单使用方法 官方网址介绍http://code.google.com/p/swfobject/wiki/documentation 用法:html部分<div ...

随机推荐

  1. Hibernate 只获取外键id,不获取内容

    Hibernate,jpa注解映射中 A多对一B A的表中有B的外键. 如果想只获取A表中的B的外键而不想发送查询B的sql语句. 那么: @ManyToOne(fetch=FetchType.LAZ ...

  2. JBPM的引擎内核学习

    http://atongyeye.iteye.com/blog/2093505 流程引擎 http://www.cnblogs.com/aspnetx/archive/2009/09/24/15735 ...

  3. python3 AttributeError: 'NoneType' object has no attribute 'split'

    from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response ...

  4. The specified system/compiler is not supported

    之前安装了QT的4.5.3版本,现需要用到phonon库,因此卸载后想重新安装4.7版本,但当使用./configure编译时出现The specified system/compiler is no ...

  5. 软件测试入门——测试模型(V型 W型 H型)

    软件测试工程师称为“QA”,质量保证者——这是入门的第一点要学习的. 首先看基本的测试模型 1.“V”型 特点:[活动串行]这是一种古老的瀑布模型,反映了实际和测试之间的关系. 局限:仅仅把测试过程作 ...

  6. 关于 LimitedConcurrencyLevelTaskScheduler 的疑惑

    1. LimitedConcurrencyLevelTaskScheduler 介绍 这个TaskScheduler用过的应该都知道,微软开源的一个任务调度器,它的代码很简单, 也很好懂,但是我没有明 ...

  7. IIS 发布MVC 提示开启目录浏览

    修改应用池 托管管道模式为 集成

  8. chrome 浏览器命令

    地址栏中输入如下命令可以得到相应的信息: 命令 作用 备注 chrome://dns/ 查看 Chromium 的DNS预取的域名   chrome://net-internals Capture E ...

  9. 使用Cookie保存商品浏览记录

    数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a> ==>跳转到自定义的servlet中进行处理,先得到 ...

  10. SOS 调试扩展 (SOS.dll) 《第五篇》

    一.SOS扩展命令 SOS包含几十个命令,要熟练使用SOS,首先要了解SOS有哪些命令.下面给出SOS命令列表. 命令 描述 BPMD [<module name> <method ...