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

    egret是用ts写h5游戏,然后编译为js,有些数据想在加载时由服务端生成. 一种方法用网络请求,另外一种方法直接传值. 网络请求如果在运行中,有数据交互,其实是个比较好的选择. 而我只是在初始化时 ...

  2. 跨服务器sql操作

    1.打开跨服务器功能 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distrib ...

  3. java虚拟机和Dalvik虚拟机

    java虚拟机和Dalvik虚拟机的区别: java虚拟机Dalvik虚拟机 java虚拟机基于栈. 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多dalvik虚拟机是基于寄存器的 j ...

  4. Java:单例模式的七种写法<转>

    第一种(懒汉,线程不安全):  1 public class Singleton {   2     private static Singleton instance;   3     privat ...

  5. 配置Apache与PHP的环境

    http://www.cnblogs.com/zhcncn/archive/2013/05/09/3068318.html 1. 下载 Apache版本号为2.2.22. 最好下载msi安装文件.下载 ...

  6. CDH安装kafka

    摘要:前言其实cloudera已经做了这个事了,只是把kafka的包和cdh的parcel包分离了,只要我们把分离开的kafka的服务描述jar包和服务parcel包下载了,就可以实现完美集成了.具体 ...

  7. java-el+jstl+jsbc综合示例

    项目结构: 项目展示: 数据库: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.53 : Database - product ************ ...

  8. css鼠标移动到文字上怎样变化背景颜色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Charles安装包及破解包下载地址

    Charles安装包及破解包下载地址 http://xclient.info/s/charles.html?_=baf317d2a9932afca9b32c327f8a34c9

  10. [oracle] oracle的三种密码验证机制以及在windows和linux下的不同启动过程

    oracle数据库的密码验证机制: ① 操作系统验证 拥有SYSDBA和SYSOPER的用户用该方式验证此时数据库无需启动,也无需开启监听和实例服务. 要求:本地组ora_dba中有该操作系统的登录用 ...