多线程的学习与GDI的学习
今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的事情,虽然也有不想这样子的事情,但是我感觉我还要掌握好多啊,现在只是刚开始,跟着老师讲课的步伐慢慢的在前进,可是太多知识的掌握还是依赖于自己的领悟,现在就是感觉太多不懂的知识,是不是开始焦虑我不知道啦,不过我会努力啦。嘿嘿,今天我们学习啦多线程和GDI,下面就总结一下。
一.多线程
在学习多线程前我们需要知道两个名词,进程和线程:
- 进程:就是计算机开启的一个正在运行的软件,在我们的操作系统上称为一个进程。计算机有N个进程;
- 线程:指的是在一个进程里开辟多个功能来同时执行多件任务。
一个进程包含多个线程,线程同时间工作,而一个应用程序仅仅有一个进程;在学习进程时间我们需要使用Process这个类,下面举例说一下进程啦
static void Main(string[] args)
{
#region MyRegion
//Process.Start("devenv"); //通过进程打开vs,而start方法中的参数为进程的名字
#endregion #region MyRegion
//Process[] process = Process.GetProcesses(); //在这里是打开计算机上面的所有进程
//foreach (var item in process)
//{
// Console.WriteLine(item);
//}
#endregion #region MyRegion
//Process p = new Process();
//ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe"); //在ProcessStartInfo类中实例化对象,并传参为打开进程的路径
//p.StartInfo=info;
//p.Start(); // 打开一个进程
//Console.ReadKey();
#endregion
}
上面主要学习啦进程的方法,下面就简单的学习下线程的方法,而线程的方法使用Thread这个类,夏敏就创建一个Winform窗体,在其中拖拉一个TextBox和Button,如下所示:

private void btn_Click(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
/*Control(WinForm控件的父类),在这里调用他的方法,该方法的意思是是否跨线程,让他设置为false即可,
当不添加这个方法时间显示的窗体则在调用Console(控制台)时间WinForm窗体不能使用,仅仅Console在计数;*/
Thread th = new Thread(Ran); //线程实例化对象
th.Start(); //调用方法Start
}
public void Ran() //循环0到1000之间的数字
{
for (int i = ; i < ; i++)
{
this.textBox1.Text = i.ToString();
}
}
在举例说一下线程的使用,在生活中我们经常会看到抽奖机,下面我们就简单的制作一个小的抽奖机,嘿嘿,代码如下:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool b = false;
Thread t= null;
private void button1_Click(object sender, EventArgs e)
{
if (!b)
{
this.button1.Text = "停止";
b = true;
Control.CheckForIllegalCrossThreadCalls = false;
t = new Thread(Ran);
t.Start();
}
else
{
this.button1.Text = "抽奖";
b = false;
t.Abort();
}
}
public void Ran()
{
Random r = new Random();
while (true)
{
this.label4.Text = r.Next(, ).ToString();
this.label2.Text = r.Next(, ).ToString();
this.label3.Text = r.Next(, ).ToString();
}
}
}
二.GDI的学习
在这里学习啦GDI,这个就是我们在窗体上面可以简单的画图吧,下面简单的实现以下他的功能如下所示:

private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics(); //GUI画图类
Pen p = new Pen(Brushes.Blue); //用Pen这个类中的Brushes方法直接调用颜色画笔
g.DrawLine(p, new Point(, ), new Point(, )); //调用Graphics类中的方法DrawLine
//来画出来一天线条,方法中的参数为起始点和终止点
Point[] num = {new Point(, ), new Point(, ), new Point(, ),new Point(,)};
g.DrawLines(p,num);
}
这就是今天学习的内容啦,嘿嘿,感觉在学习多线程时间还是和计算机实际联系蛮大的,而不是仅仅的就只能看到我们在环境中写程序,然后在vs中显示,好啦,就写到这里啦嘿嘿。
多线程的学习与GDI的学习的更多相关文章
- VC++学习之GDI概述
VC++学习之GDI概述 图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏 ...
- C++ 学习资料搜寻与学习(第一期)(未完待续)
一.图形图像类 [Visual C++]vs2008/2005正确打开vs2010所创建项目的几种方法 jlins 2012-04-12 14:38 [Visual C++]关于无法打开包括文件:“S ...
- JavaWeb学习总结-04 Servlet 学习和使用
一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...
- 如何学习FPGA?FPGA学习必备的基础知识
如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA 基础知识 FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...
- 强化学习之 免模型学习(model-free based learning)
强化学习之 免模型学习(model-free based learning) ------ 蒙特卡罗强化学习 与 时序查分学习 ------ 部分节选自周志华老师的教材<机器学习> 由于现 ...
- HTML+CSS学习笔记 (6) - 开始学习CSS
HTML+CSS学习笔记 (6) - 开始学习CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏 ...
- 【STL源码学习】STL算法学习之二
第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, cla ...
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
[Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...
- 【深度学习系列】迁移学习Transfer Learning
在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...
随机推荐
- SVN回滚至某个版本
今天新上传的版本出错了,需要回滚至之前的版本. 记录一下过程. 在项目文件夹下. 1.打开日志历史.右键单击,TortoiseSVN-->show log 2.要回滚至版本x.在版本x上右键单击 ...
- Apache HttpComponents 获取inputStream
package org.apache.http.examples.client; import java.io.IOException; import java.io.InputStream; imp ...
- eclipse安装中文补丁包
第一步:打开http://www.eclipse.org/babel/ 第二步:找到downloads. 第三步:点击Oxygen. 第四步:找到简体中文的zip插件并兵下载. 第五步:解压. 第六步 ...
- UVALive-4670 AC自动机入门题 求出现次数最多的子串
/** 链接:http://vjudge.net/problem/UVALive-4670 详见lrj训练指南P216 */ #include<bits/stdc++.h> using n ...
- linux rename 和?????
[root@ob2 mytmp]# ls01.txt 02.txt 03.txt aa2.txt aa.sh aa.txt tp_2017-09-143516.tar.gz tt [ro ...
- CodeIgniter(3.1.4)框架使用静态文件(js,css)
调整目录结构: 可以在控制器中这样加载视图: * 加载url辅助类. views视图中可以这样引用静态文件: 则最终的静态文件url会生成这样:
- 试验如何通过审核Google AdSense——我跟谷歌ads杠上啦
http://www.hankcs.com/appos/webhost/apply-google-ads.html —————————————————————————————————————————— ...
- 微信分享SDK
网址:http://www.8ru.org/weixin-js-sdk.html 下载demo:http://demo.open.weixin.qq.com/jssdk
- jquery easyui datagrid 动态 加载列
实现方式: 首先根据输入的sql语句获得相关的列名称返回给前台,然后在datagrid中动态加载列,接着根据查询条件(包括sql语句)获取相关的记录返回给前台用于填充datagrid.从而实现类似or ...
- jquery json解析详解
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: 1 {"comments":[ ...