HOW TO:使用 Visual C# .NET 创建线程 (From MSDN)

有关本文的 Microsoft Visual Basic .NET 版本,请参阅 315577.

本文引用下面的 Microsoft .NET Framework 类库名称空间:
  • System.Threading


本任务的内容

概要


在 Visual C# .NET 中,您可以编写多线程应用程序。本文介绍简单的 Visual C# .NET 应用程序如何创建和管理线程。

返回页首

要求

下面的列表概括了推荐的硬件、软件、网络结构以及所需的 Service Pack:
  • Microsoft Windows 2000 或 Microsoft Windows XP
  • Microsoft Visual C# .NET
本文假定您熟悉下列主题:
  • Visual C# .NET 编程
  • Visual Studio .NET 集成开发环境 (IDE)
返回页首

使用线程创建 Visual C# .NET 应用程序

  1. 启动 Microsoft Visual Studio .NET。
  2. 新建名为 ThreadWinApp 的 Visual C# .NET Windows 应用程序项目。
  3. 向窗体添加一个“Button”控件。默认情况下,该按钮名为“Button1”。
  4. 向窗体添加一个“ProgressBar”组件。默认情况下,该进度栏名为“ProgressBar1”。
  5. 右键单击该窗体,然后单击“查看代码”。
  6. 将以下语句添加到文件的开头:
    using System.Threading;
  7. 为“Button1”添加以下“Click”事件处理程序:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. 将下面的变量添加到 Form1 类:
    private Thread trd;
    
  9. 将下面的方法添加到 Form1 类:
    private void ThreadTask()
    {
    	int stp;
    	int newval;
    	Random rnd=new Random();
    
    	while(true)
    	{
    		stp=this.progressBar1.Step*rnd.Next(-1,2);
    		newval = this.progressBar1.Value + stp;
    
    		if (newval > this.progressBar1.Maximum)
    			newval = this.progressBar1.Maximum;
    		else if (newval < this.progressBar1.Minimum)
    			newval = this.progressBar1.Minimum;
    		
    		this.progressBar1.Value = newval;
    
    		Thread.Sleep(100);
    	}
    }
    注意:这是创建线程的基础代码。此段代码是一个无限循环,它随机增加或减小“ProgressBar1”中的值,然后等待 100 毫秒后再继续。
  10. 为“Form1”添加以下 Load 事件处理程序。此段代码将新建一个新线程,使该线程成为后台线程,然后启动该线程。
    private void Form1_Load(object sender, System.EventArgs e)
    {
    	Thread trd = new Thread(new ThreadStart(this.ThreadTask));
    	trd.IsBackground = true;
    	trd.Start();
    }
返回页首

确认它可以使用

  1. 生成并运行该应用程序。请注意,“ProgressBar1”中的值会随机更改。这是新线程在起作用。
  2. 要演示主线程独立于更改“ProgressBar1”值的线程,请单击窗体上的按钮。会出现一个对话框,其中显示下面的错误信息:
    This is the main thread
Wait for input.请注意,“ProgressBar1”中的值会继续更改。

返回页首

疑难解答

在更复杂的应用程序中,确保在访问共享变量时同步多个线程。有关详细信息,请参阅 Visual C# .NET 联机帮助文档中的“lock”语句和相关主题。

返回页首

参考

有关详细信息,请访问下面的 Microsoft Web 站点或参阅 .NET Framework SDK 文档:

“Thread 类”
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemThreadingThreadClassTopic.asp

这篇文章中的信息适用于:

  • Microsoft Visual C# .NET (2002)
  • Microsoft Visual C# .NET (2003)
  • Microsoft ADO.NET (included with the .NET Framework) 1.0
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
最近更新:2003-9-15 (1.3)
关键字:kbNameSpace kbThreadSync kbThread kbHOWTOmaster KB815804 kbAudDeveloper
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值