求 c# 创建多线程的作用和方法

如题所述

在.NET中,多线程功能是在System.Threading名称空间中定义的。因此,在使用任何线程类之前,必须定义 System.Threading名称空间。定义方法如下:using System.Threading;启动线程System.threading名称空间中的Thread类代表一个线程对象,用这个类对象可以创建新的线程,删除、暂停和恢复线程。 下面的代码使用Thread类创建一个新的线程,然后启动这个线程:thread = new Thread(new ThreadStart( WriteData ));thread.Start();其中WriteData是这个线程要执行的一个函数,代码如下:protected void WriteData(){string str ;for ( int i = 0; i=10000; i++ ){str = "Secondary Thread" + i.ToString();Console.WriteLine(listView1.ListItems.Count, str, 0, new string[]{""} );Update();}}杀死线程Thread类的Abort方法用于永久地杀死一个线程。但是请注意,在调用Abort方法前一定要判断线程是否还激活,也就是判断thread.IsAlive的值:if ( thread.IsAlive ){thread.Abort();}暂停线程Thread.Sleep方法用于将一个线程暂停一段时间,代码如下:thread.Sleep();设置线程的优先权我们可以使用Thread类的ThreadPriority属性设置线程的优先权。线程优先权的取值范围是Normal、AboveNormal、BelowNormal、Highest或者Lowest。请看下面的设置代码:thread.Priority = ThreadPriority.Highest;延迟线程Thread类的Suspend方法可以延迟一个线程。线程被延迟到调用Resume方法为止。if (thread.ThreadState = ThreadState.Running ){thread.Suspend();}恢复被延迟的线程调用Resume方法可以恢复一个被延迟的线程。如果线程没有被延迟,Resume方法就是无效的。if (thread.ThreadState = ThreadState.Suspended ){thread.Resume();}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-06-12
首先不是为了多线程而多线程,多线程会极大的带来额外的出错的几率。
C#中第一个打开窗口的线程是主线程,也是处理UI的线程,最好保持这个线程通畅,即不要有阻塞操作,如Thread.Sleep(10);等这样是不好的。
耗时的线程需要打开新的线程来操作,而且最好把IsBackground属性设为True。这样在所有前台线程推出后,这些后台线程也自动退出。 手写俩例子,有错自己查!!一、首先初始化一个线程,
需要一个threadStart实例,
Thread的构造函数 public Thread(ThreadStart threadStart)

那就再看threadStart的构造函数

public threadStart(Delegate delegate)

需要一个委托。直接用函数名也可以。

比如你要另开一线呈执行的一个方法名为 newThread

那就如下

ThreadStart ThreadS=new ThreadStart(newThread);

Thread t=new Thread(ThreadS);

t.Start();二、using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ConsoleApplication3
{
public partial class Form1 : Form
{
private Thread th1, th2;

public Form1()
{
InitializeComponent();
}
public void thOpr1()
{
Application.Run(new Form2());
}
public void thOpr2()
{
Application.Run(new Form3());
}
public static void Main(String[] args)
{
Application.Run(new Form1());
}

private void button1_Click(object sender, EventArgs e)
{
th1 = new Thread(new ThreadStart(thOpr1));
th2 = new Thread(new ThreadStart(thOpr2));
th1.Start();
th2.Start();
}
}
}本回答被网友采纳
第2个回答  2019-04-14
thread t1=new thread(new threadstart(你的不带参数方法))
或者
thread t1=newthread(new parsethreadstart(你的代参数方法))

然后
t1.start开始

C#中的多线程问题用于什么地方?怎么掌握?
还可以使用许多其它的方式来阻塞线程。例如,可以通过调用 Thread.Join 使一个线程等待另一个线程(子线程)停止。使用 Monitor.Wait使一个线程等待访问一个同步对象。5.关键字lock可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。多线程...

C#怎么开辟多线程,要是多了是否会出错,出错了怎么办?
首先开辟线程需要使用命名空间System.Threading。\/\/应用程序主入口 [STAThread]static void Main(string[] args){ \/\/先要创建线程 Thread threadOne = new Thread(new ThreadStart(MethodOne));\/\/同理创建threadTwo、threadThree多个线程 \/\/启动线程 threadOne.Start();\/\/主线程的具体执行代码 ...} ...

C#线程到底有什么用途?
还有就是结合消息机制,实现异步操作.

c#多线程有几种实现
1)使用Thread类创建一个新线程 static void Main(string[] args){ Thread thread = new Thread(delegate(){ for (int i = 0; i <= 10; i++){ Console.WriteLine(Thread.CurrentThread.Name + ":" + i); Thread.Sleep(100); } }); thread.Name = "t1 thread";...

C#多线程问题
1、服务器启动监听端口;2、客户端向服务发出连接请求,同时创建一个随机监听端口,并进行监听;3、服务器接收到连接请求后创建一个连接,进行基本消息验证,验证通过,读取消息协议中客户端的IP和随机端口,向客户端发出连接请求,同时释放服务器端监听创建的连接,以便处理下一个监听;4、客户端与服务器...

C# 多线程问题
(可采用计数方式,开始记录需要创建多少个线程,再记录一个变量(原子型)每个子线程完成时都将变量值加1,如果变量值==线程个数时,则将这个对象Set())但是这样的效率真是不好说,多线程的目的就是想更快,并且是可并发的处理事情,你这样设计就快不哪去啊。设置全局变量,这个不可取,在多线程中...

C#中线程的具体介绍?及时间片
线程是程序中一个单一的顺序控制流程 简单说来,就是CPU分配给各个程序的时间,使各个程序从表面上看是同时进行的,而不会造成CPU资源浪费 在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但是在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是...

如何用C#编写多线程的与窗体交互的程序
C#中的UI元素是主线程创建的,也只能通过创建它们的主线程进行修改,这是因为UI元素本身不是线程安全的,多线程操作会发生不可预料的错误。因此,默认情况下,尝试从其他线程操作UI元素会引发异常,虽然你可以通过下面的代码强制允许UI元素的跨线程操作:CheckForIllegalCrossThreadCalls = false;但是,这样做...

如何用C#实现多线程TCP协议的服务器端程序
用C#实现多线程TCP协议的服务器端程序:\/\/ \/\/\/ Tcp客户线程类(服务端),ThreadServerProcessor 线程产生的客户连接,用该线程读写 \/\/\/ public class ThreadClientProcessor { \/\/Tcp连接实例 private TcpClient tcpClient;\/\/消息框,本来想写日志用 private System.Windows.Forms.ListBox MessageList...

C#网络编程与多线程的疑问,求指点
1、这种情况下,多线程当然是要把最占用时间的步骤,以及循环的部分,放到线程里。2、其他线程的代码无法直接操作UI线程里的控件。需要使用委托。你具体的需求我不是很清楚。但是我在这里假设一个例子:比如我有个买票的程序,必须每隔2秒,去服务器请求门票的剩余数量。显示在界面上。界面上还有诸如“...

相似回答