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

最新文章

  1. TimeStamp
  2. C#中使用Sql对Excel条件查询
  3. JavaWeb---总结(十六)JSP指令
  4. C# 或 JQuery导出Excel
  5. android中使用html作布局文件
  6. NOSQL之【redis的主从复制】
  7. HasMap
  8. c# 添加了按钮双击事件后,再删除掉代码会提示错误
  9. iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏
  10. WebSphere之Web Server插件
  11. indexOf和lastIndexOf方法
  12. SDWebImage底层实现原理
  13. IOS 下载app
  14. wireshark抓本地回环包
  15. jetty安装、配置、优化
  16. UVALive 7146 (贪心+少许数据结构基础)2014acm/icpc区域赛上海站
  17. 微信小程序 - scroll-into-view(提示)
  18. pageadmin CMS网站建设教程: 附属表数据列表调用语法
  19. Rails 5 Test Prescriptions 第8章 Integration Testing with Capybara and Cucumber
  20. 进程一些命令pstree,ps,pstack,top

热门文章

  1. c++之—— lambda表达式(有个未能解决的问题等待大佬解答)——(在stack overflow找到了答案)
  2. hdu2199(高精度二分模版)
  3. 基于jplayer实现歌词同步的JS音乐播放器效果
  4. 谈谈 老罗和&amp;quot;锤子&amp;quot;
  5. smtpclient 邮件发送测试
  6. 清除DataGridView显示的数据
  7. Hibernate-【查询】
  8. Java 中的异常和处理详解
  9. Arrays.sort和Collections.sort实现原理解析
  10. 空间管理 您的位置: 51Testing软件测试网 &#187; lilisx2006的个人空间 &#187; 日志 在一个没有测试经理的小公司如何做好测试