关闭

C#学习笔记之线程

81人阅读 评论(0) 收藏 举报
分类:
<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace 线程基础知识
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 前台线程:默认创建的线程都是前台线程。主线程结束之后,前台线程还会继续执行,
        ///          当前台线程执行结束之后,整个程序才会结束。
        /// 后台线程:当主线程结束时,后台线程会立刻结束,整个程序也会结束。
        /// </summary>
        
        Thread th;
        private void button1_Click(object sender, EventArgs e)
        {
            // 如果是单线程程序,用主线程来调用函数,那么如果函数执行的时间比较长,则程序会
            // 出现“未响应”的情况,所以需要新开一个线程。
            
            // 创建一个线程来执行函数 Test();
            th = new Thread(Test);
            
            // 将线程设置为后台线程,主线程关闭之后后台线程也会立刻关闭,程序立刻结束。
            th.IsBackground = true;

            // 告诉CPU,线程准备就绪,随时可以调用,具体什么时间执行,由CPU决定。
            th.Start(); 
        }

        public void Test()
        {
            for (int i = 0; i < 10000; i++)
            {
                //Console.WriteLine(i.ToString());

                // 默认情况下:线程间操作无效,不可以跨线程操作。
                textBox1.Text = i.ToString();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 取消跨线程操作的限制。
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        // 取消跨线程操作的限制之后,当主线程关闭时,TextBox的对象就被释放了,而有时会由于某种不
        // 确定原因导致后台线程并没有立刻结束,那么线程还是会继续操作主线程的TextBox对象,这样就
        // 会发生错误。
        // 解决办法是:当窗口被关闭时(也就是主线程结束时),判断后台线程是否已经关闭,如果没有关闭,
        // 则手动关闭。
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 当关闭窗口时判断后台线程是否已经结束
            if (th != null)
            {
                // 如果线程没有结束,则手动结束它
                th.Abort();
            }
        }
    }
}

</span>

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C# 线程:定时器的使用

转载请注明出处:http://www.cnblogs.com/KeenLeung/p/3911556.html Timer类:设置一个定时器,定时执行用户指定的函数。 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。 初始化一个Timer对象: Timer ...
  • qq_23126581
  • qq_23126581
  • 2017-06-05 10:33
  • 691

C# 中关闭当前线程的四种方式

转自:http://blog.csdn.net/yang1994/article/details/7947198 net类库已经帮助我们实现了窗口的关闭,如果此窗口是系统的主窗口,关闭此窗口即应该退出了整个应用程序。 但事实上有时候并不是这样的,关闭窗口,只是停止了当前窗口的消息循环。 系...
  • u012252959
  • u012252959
  • 2016-01-12 14:40
  • 9798

C# 进程与线程 操作

using System.Diagnostics;//进程的命名空间               //利用进程可以打开一些应用程序             Process...
  • yanhuatangtang
  • yanhuatangtang
  • 2017-05-29 15:48
  • 401

C#几种创建线程的方式

using System; using System.Threading; namespace MutiThreadSample {     ///     /// 创建线程的方式     ///   &...
  • LengSeXiZuo
  • LengSeXiZuo
  • 2014-08-21 14:35
  • 748

关于c# 中“正在终止线程”的问题

在C#中启用线程后,如果试图使用Abort方法来终止线程,那么必定会抛出“正在终止线程”的异常,一开始我也想过如何来避免这种异常出现,花了不少气力,但最后发现全是徒劳。   原因是一个正在运行的线程被终止在C#的机制中是属于非正常结束,所以必定会爆出异常,所以我们也大可不必因为在代码方...
  • heeye
  • heeye
  • 2014-05-07 17:10
  • 5914

C#终止线程的方法

微软的文档中不建议以Abort的方式终止线程。比如终止线程的瞬间,FileStream没有释放,会出现问题,等等。 Framework4.0提供了标准取消模式:协作式取消(Cooperative Cancellation),写了个小Demo进行验证 开启两个线程,分别向对应文本框中添加信息。 ...
  • qq_20161893
  • qq_20161893
  • 2017-11-01 16:52
  • 251

C#多线程开发2:线程挂起,恢复与中止等操作

在博文《C#多线程开发1:使用Thread类创建与启动线程》中介绍了线程的创建与启动。本文将在前文的基础之上,接着介绍线程的挂起,恢复与中止等操作。 首先回忆一下前文的知识点。 我们已经学习到: 1、创建线程 ThreadStart entry = new ThreadStart(CalcSum)...
  • tiana0
  • tiana0
  • 2013-09-22 11:35
  • 14411

C# 线程池ThreadPool的用法简析

什么是线程池?为什么要用线程池?怎么用线程池? 1. 什么是线程池?         .NET Framework的ThreadPool类提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。那么什么...
  • smooth_tailor
  • smooth_tailor
  • 2016-09-07 16:09
  • 13962

C#多线程开发1:使用Thread类创建与启动线程

C#中,可以使用Thread类来处理(包含创建,启动,挂起,恢复,终止等操作)线程。本文将介绍如何使用Thread类来创建与启动新线程。 Thread类类位于System.Threading命名空间中。 1、线程创建与启动 实例化一个Thread对象,就创建了一个新的线程。 线程创建后调用Sta...
  • tiana0
  • tiana0
  • 2013-09-21 19:54
  • 19210

C#多线程中使用代理(委托)

net2.0以后,微软加强了控件的安全机制,不允许跨线程操作。     如果想跨线程操作控件的话要使用委托。   以前有过相关学习,后来既不清了,看了一遍之前写的文章,觉得太烂了,重新总结一下:   思路:在主线程中定义一个方法,...
  • Baple
  • Baple
  • 2014-03-19 12:43
  • 3224
    个人资料
    • 访问:35919次
    • 积分:1875
    • 等级:
    • 排名:千里之外
    • 原创:157篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条