C# 多线程 简单使用方法以及常用参数
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading; //线程操作的类在这个命名空间下. namespace C02多线程
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//关闭控件的跨线程访问检查
TextBox.CheckForIllegalCrossThreadCalls = false;
} private void button1_Click(object sender, EventArgs e)
{
int sum = 0;
for (int i = 0; i < 999999999; i++)
{
sum += i;
} MessageBox.Show("ok");
} private void button2_Click(object sender, EventArgs e)
{
//创建1个线程对象 并为这个线程对象指定要执行的方法.
Thread thread = new Thread(TestThread);
//设置线程为后台线程.
thread.IsBackground = true;
//开启线程
thread.Start(); //线程默认情况下都是前台线程.
//要所有的前台线程退出以后 程序才会退出.
//后台线程 只要所有的前台线程结束 后台线程就会立即结束.
//进程里默认的线程我们叫做主线程或者叫做UI线程.
//线程什么时候结束 该线程执行的方法执行完以后 线程就自动退出. //多个线程访问同一资源 可能造成不同步的情况. 这个叫做 线程重入.
//th.Abort(); 强行停止线程.
//Thread.Sleep(1000);//将当前线程暂停 单位毫秒
//Thread.CurrentThread;得到当前线程的引用 //线程调用带参数的方法
//创建1个ParameterizedThreadStart委托对象.为这个委托对象绑定方法.
//将委托对象通过构造函数传入线程对象
//启动线程的时候调用Start()的重载 将参数传入.
} //准备让线程去调用.
private void TestThread()
{
int sum = 0;
for (int i = 0; i < 999999999; i++)
{
sum += i;
}
MessageBox.Show("ok");
} private void CountNunm()
{
//使用lock加锁 请联想你上厕所的情况
lock (this)
{
for (int i = 0; i < 10000; i++)
{
int num = int.Parse(textBox1.Text.Trim());
num++;
//Thread.Sleep(500);//将当前线程暂停
// Thread.CurrentThread.Abort();
//Thread th = Thread.CurrentThread;
//th.Abort();
//if (num == 5000)
//{
// th.Abort();
//}
textBox1.Text = num.ToString();
}
}
}
Thread th;
private void button3_Click(object sender, EventArgs e)
{
th = new Thread(CountNunm);
th.Name = "哈哈线程";
th.IsBackground = true; th.Start(); //Thread th1 = new Thread(CountNunm);
//th1.IsBackground = true;
//th1.Start();
} private void button4_Click(object sender, EventArgs e)
{
//ThreadStart s = new ThreadStart(CountNunm);
//Thread th = new Thread(CountNunm);
ParameterizedThreadStart s = new ParameterizedThreadStart(TestThreadParsms);
Thread t = new Thread(s);
t.IsBackground = true;
t.Start("你好啊");
} private void TestThreadParsms(object obj)
{
Console.WriteLine(obj.ToString());
} }
}
C# 多线程 简单使用方法以及常用参数的更多相关文章
- PHP命令行执行程序php.exe使用及常用参数
PHP命令行执行程序php.exe参数说明 -f <file>:以命令行方式运行指定的PHP文件,只要指定具体的PHP文件(带绝对路径),php.exe就可以执行PHP文件,所以这个参数单 ...
- Bootstrap modal常用参数、方法和事件
Bootstrap modal(模态窗)常用参数.方法和事件: 参数: 名称 类型 默认值 描述 Backdrop Boolean或字符串“static” True True:有背景,点击modal外 ...
- jQuery选择器总结 jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法
新年第一编文章 jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值 ...
- Java线程池使用和常用参数
多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 ...
- 深入理解JVM虚拟机10:JVM常用参数以及调优实践
转自http://www.rowkey.me/blog/2016/11/02/java-profile/?hmsr=toutiao.io&utm_medium=toutiao.io&u ...
- Java Native Interface 五 JNI里的多线程与JNI方法的注册
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI里的多线程 在本地方法里写有关多线程的 ...
- Production环境中iptables常用参数配置
production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...
- find常用参数详解
find常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux系统中,在init 3模式情况下都是命令行模式,这个时候我们想要找到一个文件的就得依赖一个非常好用的 ...
- swfobject.js 2.2简单使用方法
swfobject.js 2.2简单使用方法 官方网址介绍http://code.google.com/p/swfobject/wiki/documentation 用法:html部分<div ...
随机推荐
- ORACLE directory 目录--转载
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性.其语法为:CREATE [OR REPLACE] DIRECTOR ...
- that-annoying-insert-problem-getting-data-into-the-db-using-dapper
http://samsaffron.com/archive/2012/01/16/that-annoying-insert-problem-getting-data-into-the-db-using ...
- C#中的委托和事件(续)
转自张子阳的博客http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-Advanced.aspx 引言 如果你看过了 C#中 ...
- jdk线程常见面试题
请编写一个多线程程序,实现两个线程,其中一个线程完成对某个对象int成员变量的增加操作,即每次加1,另一个线程完成对该对象成员变量的减操作,即每次减1,同时要保证该变量的值不会小于0,不会大于1,该变 ...
- Eclipse Gtk+
From: http://hi.baidu.com/spmno/item/9425018707f295dfd1f8cdbe 1. Project->Properties,然后选 C/C++ Bu ...
- 关于static/const的作用
这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内 ...
- 如何在使用 RemoteWebDriver 打开网页的同时获取 Http 状态码
最近一直在用Selenium这个开源项目写一些web 自动化的小玩意.本来一直运行的挺好,直到有一天突然发现资源抓取失败了,翻看日志才发现,原来本该正常打开的页面返回了504错误所以自然失败了.如何避 ...
- Quick Sort
class Program { static int[] a = new int[] { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 }; int n; static void Mai ...
- 图解CISCO 3550忘记密码解决方法
图解CISCO3550忘记密码解决方法 Cisco网络设备密码忘记怎么初始出厂默认值?这时网友常常会提出的问题,怎么解决,有人说啦,去百度去谷歌一下不就行啦,然而这对初学者任是个挑战,虽然步骤只有简单 ...
- iPad用户使用Mac和Windows应用软件-记Parallels Access使用体验
iPad用户使用Mac和Windows应用软件-记ParallelsAccess使用体验 用ipad远程连接win系统已不是新鲜事情,我们可以使用TeamViewer和OnLiveDesktopPlu ...