class Program
{
static void Main(string[] args)
{ //独立创建线程
Thread t = new Thread(ThreadProcess);
t.Start(new object());
//线程池
ThreadPool.QueueUserWorkItem(ThreadProcess, new object());
//Task方式创建线程
System.Threading.Tasks.Task.Factory.StartNew(ThreadProcess, new object());
//需要手动终止,当然现在终止可能线程还未运行完成,
t.Abort();
}
private static void ThreadProcess(object tag)
{
int i = 100;
while (i > 0)
{
Console.WriteLine(string.Format("i:{0} ", i));
Thread.Sleep(10);
i--;
}
}
}
2742c#叫csharp锐利的东西
微软将这门语言开发成全面向对象,取消面向过程,
起名字时因为C/C++在先,就起名字为 C++++ 即4个加号
为了简单,写成了 C# 而#就是4个加号
#读作了sharp即锐利、强大的意思
2441C# 多线程
笔记三的补充:
这两种写法的效果是一样的。都是创建一个线程。后者只是 C# 的语法,编译时编译器会自动转换成第一种的形式。ThreadStart 是线程的入口,可以理解为一个函数指针,指向线程将要运行的函数。
2440C# 多线程
C# 在 4.0 以后一共有3种创建线程的方式:
2439C# 多线程
本篇文章的第二段代码创建线程中,在2.0以后可以直接执行子线程,这样一来程序可以省略Main函数中的第一行代码。运行结果一样,似乎程序会更简单易懂点。如下:
2438C# 多线程
线程的销毁
(1)线程自动销毁
线程方法Method执行完结,线程a也自动终止.
(2)如果是无限循环需要手动销毁
窗体应用程序的线程间通信
.net 2.0以后加强了安全机制,不允许在winform中直接跨线程访问控件的属性。
线程函数通过委托传递,是一种安全的线程间通信的方式。也是委托的功能之一。
但C#也可以关闭线程安全保护,自由的调用其他线程生成的控件。只要加上
但不推荐使用。自己练习时可以写着玩一下。