多线程的学习与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 = 0; i < 1000; 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(0, 10).ToString();
                this.label2.Text = r.Next(0, 10).ToString();
                this.label3.Text = r.Next(0, 10).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(10, 20), new Point(100, 200));  //调用Graphics类中的方法DrawLine
                                                                   //来画出来一天线条,方法中的参数为起始点和终止点
            Point[] num = {new Point(10, 20), new Point(30, 40), new Point(80, 100),new Point(70,80)};
            g.DrawLines(p,num);
        }

这就是今天学习的内容啦,嘿嘿,感觉在学习多线程时间还是和计算机实际联系蛮大的,而不是仅仅的就只能看到我们在环境中写程序,然后在vs中显示,好啦,就写到这里啦嘿嘿。

时间: 2024-11-15 17:43:49

多线程的学习与GDI的学习的相关文章

如何学习ruby?Ruby学习技巧分享

怎么学习ruby?在学习ruby之前需要掌握哪些知识呢?这是很多想要学习ruby朋友的心声,我不具体给出答案,下面就给大家讲讲一位前辈学习ruby(http://www.maiziedu.com/course/ruby/)的学习历程吧.在大学时学的电子专业,在学校里学过C/汇编,在学习ruby前期,和大多数的Rubyist一样,我也是从学习Rails开始去了解Ruby的,在学习Rails之前,我正在使用JavaEE的SSH框架(struts+spring+hibernate), 当时也算是Jav

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

一.图形图像类 [Visual C++]vs2008/2005正确打开vs2010所创建项目的几种方法 jlins 2012-04-12 14:38 [Visual C++]关于无法打开包括文件:“StdAfx.h”或者意外结尾的错误解决方案 jlins 2012-04-11 21:10 [Visual C++]绘图函数BitBlt的使用方法 jlins 2012-04-10 18:11 [C++]关于随机函数与概率设置 jlins 2012-04-10 02:53 [Visual C++]CD

线程异步学习(基于java学习笔记)

一 基本概念的理解 1.1线程中断方法 --interrupt() 当调用一个线程的interrupt方法时候,线程并没有真的被中断,只是对其状态改变,线程会有一个boolean变量isInterrputed.有wait sleep方法会阻塞线程. wait 和sleep方法都会使得线程挂起,阻塞.区别是wait会释放资源,而sleep方法并不会释放资源.一旦执行wait方法后,线程立即被挂起,直到有其他线程调用资源的notify方法.具体参见博客,多线程资源争用问题: http://blog.

JAVA学习_零基础学习JAVA方法_零基础学习JAVA思路

在学习JAVA前,对于一个真正初学者(也就是从零开始学习JAVA人员)的一个问题:什么是JAVA,然后才是怎么学习JAVA?JAVA是sun microsystems在1995年推出的高级编程语言,其分为Java SE.Java EE.Java ME三大体系,而JAVA SE是JAVA的基础,继JAVASE之后是JAVAEE,JAVA ME.JAVASE是JAVAEE的基础,Servlet.JSP是框架的基础.数据库方面个人建议学习oracle,当然其它的像 MySQL,MSSQL,都可以,只要

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

数据库学习网站和linux学习网站

Oracle ITPub论坛 http://www.itpub.net 著名IT技术论坛.尤以数据库技术闻名. ITPUB论坛的前身应该是建立在 smiling 的 oracle小组,他们搬家前的主页应该是在下面的这个地址吧! http://oracle.myrice.com/ CNOUG论坛 http://www.cnoug.org/ oracle中国用户组,高手云集,讨论Oracle数据库安装.管理.备份.恢复.性能优化: Oracle数据库高级技术HA.VLDB.ORACLE INTERN

怎样找到一份深度学习的工作(附学习材料,资源与建议)

原文地址:How to get a job in deep learning 原文翻译与校对:@戴丹 && @胡杨 && 寒小阳 时间:2016年10月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/52777661 声明:版权所有,转载请联系作者并注明出 如果你是一个软件工程师(或者你现在正在学习这一方面),你肯定有机会听说过深度学习(有时候深度学习缩写为"DL").它现在是一个热门.且快速

PHP语言学习之html5的学习,一周总结

通过这周的html5的学习我整理了一下一些东西和一些总结 写代码的时候也开头都要对齐这样开起来很舒服,这些都是用到缩进键搞定的,比如<html></html>在一块写,要前后对齐,这样容易发现错误,而且看起来比较清晰 写代码是还有英文和中文的标点符号的问题,这些都要是注意的,(这基本是我在学习的时候遇到的问题) 要掌握好重要的标签,这样能够更好的学习.... 开始学习html 5 什么是html5HTML是由W3C的维护的 HTML是大小写不敏感的,HTML与html是一样的 HT

学习应该专注于学习这件事上

最近思考了很多,突然发现前20几年都白费了.其实也算不上是白费,没有哪个人的人生是一帆风顺的. 就拿学习这件事来说,我觉得最忌讳的就是给自己订目标.学习不应该给自己订目标,学习应该专注于学习这件事上.不要说今天要达到什么什么目标,因为这样以来就等于给自己下了锚.如果没有达到的话就会焦虑,而焦虑并不会促进学习的顺利进行. 所以,我们应该享受学习的这个过程,思考自己学到了什么,即使是很小的一个知识点.在没有压力的情况下,我整个人都会放松,会真正投入到学习中,而不是被大脑中的那个目标所驱动下的"学习&