又来到了总结知识的时间了,今天又学了一些新的知识,是多线程和GDI的一些运用。

理论:

在学习多线程之前,首先要了解一下什么是进程?

进程:(关键字Process)进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,

        也是基本的执行单元。简单来说,就是计算机开启的一个正在运行的软件,是一段程序的执行过程。操作系统上包含N个进程。一个进程包含多个线程.

线程:(关键字Thread)线程是程序中一个单一的顺序控制流程,在一个进程里面开辟多个功能来同时执行多个任务。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身

前台线程:UI界面使用的是系统给我们默认的前台线程        前台线程终止后,后台线程不会终止。

后台线程:指的是我们自定义的线程对象                           后台线程终止后,前台线程将会结束。

多线程:   在单个程序中同时运行多个线程完成不同的工作成为多线程。
 
GDI:   图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。

 

实操:

进程(在控制台下)

class Program
{
static void Main(string[] args)
{ Process[] proce = Process.GetProcesses(); //获取操作系统上的所有进程 foreach (var item in proce)
{
item.Kill(); //停止关联的进程(慎用) Console.WriteLine(item); }
Process.Start("devenv"); //打开一个进程
Process p1 = new Process(); //实例化一个进程
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\system32\calc.exe"); //打开计算器进程的路径
p1.StartInfo = info;
p1.Start(); //打开 }
}
}

 线程:在Form窗体下

设计界面

主要代码:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} bool b = false;
Thread th = null; //引入命名空间 private void button1_Click(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false; //是否跨线程 if (!b) {
this.button1.Text = "终止"; b = true; th = new Thread(Bgian); th.Start(); //开始 } else
{
this.button1.Text = "抽奖";
b = false;
th.Abort(); //终止线程
} } public void Bgian() { //让三个label控件循环获取1--10的随机数
Random r = new Random();
while (true)
{ label1.Text = r.Next(1,10). ToString();
label2.Text = r.Next(1, 10).ToString();
label3.Text = r.Next(1, 10).ToString(); } }
}

运行结果

单击”抽奖“按钮后出现的界面

单击”终止“按钮出现的界面:

GDI画图(直线)

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics(); //引进命名空间using System.Drawing; Pen p = new Pen(Brushes.Red); //Pen定义用于绘制直线和曲线的对象 Brushes所有标准颜色的画笔 g.DrawLine(p,new Point(100,100),new Point (300,100)); //只能画一条线 Point[] points = { new Point(150, 200), new Point(250, 200), new Point(100, 300), new Point(300, 300) };//定义个Point数组来画多条线
g.DrawLines(p, points); }

简单提一下序列化:序列化就是将类以二进制的形式保存在硬盘上。关键字是:BinaryFormater。定义一个序列化是: BinaryFormatter binary = new BinaryFormatter();

好了,今天就先写到这里了。下周在继续吧。加油!

 

C#多线程及GDI(Day 23)的更多相关文章

  1. JavaSE_ 多线程 总目录(23~24)

    JavaSE学习总结第23天_多线程123.01 多线程程序的引入23.02 进程概述及多进程的意义23.03 线程概述及多线程的意义23.04 并行和并发的区别23.05 Java程序运行原理和JV ...

  2. 多线程的学习与GDI的学习

    今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的 ...

  3. Java基础】并发 - 多线程

    Java基础]并发 - 多线程 分类: Java2014-05-03 23:56 275人阅读 评论(0) 收藏 举报 Java   目录(?)[+]   介绍 Java多线程 多线程任务执行 大多数 ...

  4. Android - Android 面试题集

    1.Java部分 1.1 操作系统相关 1.什么是操作系统? 2.什么是线程,什么是进程? 1.2 JDK&JVM&JRE 1.JDK & JVM & JRE分别是什么 ...

  5. 大学四年,总结一套适合小白的Java自学路线和方法

    前言篇 大家好,我是bigsai 好久不见,甚是想念,文章同时收录在回车课堂(文底阅读原文可达). 无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班.报班通常太费钱,时间又不 ...

  6. QT软件工程师招聘市场需求报告

    QT软件工程师招聘市场需求报告 目录 最流行的编程语言排行榜 QT软件工程师职位需求 QT软件工程师薪资待遇 QT软件工程师行业需求 QT软件工程师QT技术需求 QT软件工程师基础技术需求 QT软件工 ...

  7. .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法

    1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...

  8. JavaSE学习总结第23天_多线程1

      23.01  多线程程序的引入 如果一个程序只有一个执行流程,所以这样的程序就是单线程程序. 如果一个程序有多条执行流程,那么,该程序就是多线程程序. 23.02  进程概述及多进程的意义 要想说 ...

  9. java 多线程 23 : Timer

    前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Tim ...

随机推荐

  1. USB OTG ID 检测原理

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  2. python 读取utf8文件

    有时候默认是gbk编码,但是要读取utf8文件,所以会出现decode 错误. 使用codecs模块: import codecs file = codecs.open('filename','r', ...

  3. C语言 linux环境基于socket的简易即时通信程序

    转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html      ——By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易 ...

  4. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(七)

    目标: 1. 完成最终的设备驱动,增加具体的watchdog设备操作的代码. 测试代码: 代码最终实现见cwd_demo.c 代码只实现了read与write.  没有实现ioctl. 因此,我们可以 ...

  5. IOS开发之xcode 快捷键

    IOS开发也有一年多了,发现Xcode快捷键,还不熟,恶补一下.要不然真影响工作效率,呵呵! 1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 C ...

  6. MySQL数据处理函数

    数据处理函数 有时从数据库表中获取到的数据须要进行一些处理. 如将小写字母替换为对应的大写字母.这个处理过程能够在客户机上进行.也能够在数据库上进行. 数据库上进行会更高效.数据库中有对应的数据处理函 ...

  7. OkHttp–支持SPDY协议的高效HTTP库

    Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池, ...

  8. asp.net ToString()方法介绍

      C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToStri ...

  9. BZOJ 2434: [Noi2011]阿狸的打字机( AC自动机 + DFS序 + 树状数组 )

    一个串a在b中出现, 那么a是b的某些前缀的后缀, 所以搞出AC自动机, 按fail反向建树, 然后查询(x, y)就是y的子树中有多少是x的前缀. 离线, 对AC自动机DFS一遍, 用dfs序+树状 ...

  10. [C#参考]事件机制

    还是那个项目,为了降低程序的耦合性,我决定小小的重构一下自己原来的代码,把Socket通信和帧的分析这两部分分别封装成一个类,当然线程没有变,只是封装了一下,为的就是模块测试完容易拼接.这也是我打算降 ...