今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的事情,虽然也有不想这样子的事情,但是我感觉我还要掌握好多啊,现在只是刚开始,跟着老师讲课的步伐慢慢的在前进,可是太多知识的掌握还是依赖于自己的领悟,现在就是感觉太多不懂的知识,是不是开始焦虑我不知道啦,不过我会努力啦。嘿嘿,今天我们学习啦多线程和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的学习的更多相关文章

  1. VC++学习之GDI概述

    VC++学习之GDI概述 图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏 ...

  2. C++ 学习资料搜寻与学习(第一期)(未完待续)

    一.图形图像类 [Visual C++]vs2008/2005正确打开vs2010所创建项目的几种方法 jlins 2012-04-12 14:38 [Visual C++]关于无法打开包括文件:“S ...

  3. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

  4. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  5. 强化学习之 免模型学习(model-free based learning)

    强化学习之 免模型学习(model-free based learning) ------ 蒙特卡罗强化学习 与 时序查分学习 ------ 部分节选自周志华老师的教材<机器学习> 由于现 ...

  6. HTML+CSS学习笔记 (6) - 开始学习CSS

    HTML+CSS学习笔记 (6) - 开始学习CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏 ...

  7. 【STL源码学习】STL算法学习之二

    第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, cla ...

  8. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  9. 【深度学习系列】迁移学习Transfer Learning

    在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...

随机推荐

  1. 简单5步,释放Mac磁盘空间

    收藏一下,以备后用 http://ourmacs.com/mactech/340

  2. Android——进度条控制图片透明度

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  3. ipad safari 滚动(overflow)解决方案

    项目需要放到ipad应用了,发现有一个奇怪的问题,就是我div是设置滚动属性的,在pc上面的各个浏览器页面变小时,会出现滚动条,可是是ipad的safari,则不会滚动,开始以为是div的问题 但发现 ...

  4. 获取touchstart,touchmove,touchend 坐标

    简单说下如何用jQuery 和 js原生代码获取touchstart,touchmove,touchend 坐标值: jQuery 代码: $('#id').on('touchstart',funct ...

  5. Web下的整体测试 --性能测试及优化思路

    随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进行测试成为日益迫切的问题.有许多测试人员来信问我B/S的测试如何做,由于工作较繁忙,对大家提出的问题也是头痛医头 ...

  6. 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆

    为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...

  7. 【转】 如何利用C#代码来进行操作AD

    要用代码访问 Active Directory域服务,需引用System.DirectoryServices命名空间,该命名空间包含两个组件类,DirectoryEntry和 DirectorySea ...

  8. 第三百一十节,Django框架,模板语言

    第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...

  9. unity3d绘画手册-------灯光之反射及各个参数解释

    下面说一下Reflection Probe, 大家都知道:当使用标准着色器时,每一个材质都会具有一定程度的镜面反射(specularity)和金属反射 (metalness)属性,在没有强大的硬件来处 ...

  10. linux gzip 命令详解

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用. 语法:gzip  ...