C#多线程学习笔记(一)

简介: 学习网站可以在http://www.yesky.com/331/215831.shtml里看到所有文章 a.在C#中要使用线程要引用System.Threading; using System.Threading; b.

学习网站可以在http://www.yesky.com/331/215831.shtml
里看到所有文章

a.在C#中要使用线程要引用System.Threading;

img_a6339ee3e57d1d52bc7d02b338e15a60.gif using  System.Threading;

b.在C#可以对程进行命名

img_a6339ee3e57d1d52bc7d02b338e15a60.gif Thread _thrd  =   new  Thread( new  ThreadStart(img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif));
img_a6339ee3e57d1d52bc7d02b338e15a60.gif_thrd.Name 
=   " thisthrd.name "

c.可以通过Thread的static属性获取当前线程
img_a6339ee3e57d1d52bc7d02b338e15a60.gif Thread.CurrentThread

d.操作线程的几个重要的方法

Start():启动线程
Sleep(int):静态方法,暂停当前线程指定的毫秒数
Abort():通常使用该方法来终止一个线程
Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复。
Resume():恢复被Suspend()方法挂起的线程的执行

e. sample

img_a6339ee3e57d1d52bc7d02b338e15a60.gif using  System;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using  System.Collections.Generic;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using  System.Text;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using  System.Threading;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
namespace  ThreadOperation
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif {
img_33d02437d135341f0800e3d415312ae8.gif    
public class Alpha
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif        Int32 i;
img_33d02437d135341f0800e3d415312ae8.gif        
public Alpha()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            i 
= 0;
img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_33d02437d135341f0800e3d415312ae8.gif        
public void Beta()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
while (true)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                Console.WriteLine(i.ToString() 
+ ":Alpha.Beta is running out of its own thread");
img_33d02437d135341f0800e3d415312ae8.gif                i
++;
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_105a1e124122b2abcee4ea8e9f5108f3.gif    }

img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif    
class Program
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif        
static int Main(string[] args)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            Thread.CurrentThread.Name 
= "System Thread";
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"Thread Start/Stop/Join sample");
img_33d02437d135341f0800e3d415312ae8.gif            Alpha oAlpha 
= new Alpha();
img_33d02437d135341f0800e3d415312ae8.gif            Thread oThread 
= new Thread(new ThreadStart(oAlpha.Beta));
img_33d02437d135341f0800e3d415312ae8.gif            oThread.Start();
img_33d02437d135341f0800e3d415312ae8.gif            oThread.Name 
= "Alpha Thread";
img_33d02437d135341f0800e3d415312ae8.gif            
while (!oThread.IsAlive) Console.WriteLine("has dead");
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"Current Thread:" + Thread.CurrentThread.Name);
img_33d02437d135341f0800e3d415312ae8.gif            Thread.Sleep(
1);
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"oThread.ThreadState:"+oThread.ThreadState);
img_33d02437d135341f0800e3d415312ae8.gif            oThread.Abort();
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"oThread.ThreadState:" + oThread.ThreadState);
img_33d02437d135341f0800e3d415312ae8.gif            oThread.Join();
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"oThread.ThreadState:" + oThread.ThreadState);
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine();
img_33d02437d135341f0800e3d415312ae8.gif            Console.WriteLine(
"Alpha.Beta has finished");
img_33d02437d135341f0800e3d415312ae8.gif            
try
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                Console.WriteLine(
"Try to restart the Alpha.Beta thread");
img_33d02437d135341f0800e3d415312ae8.gif                oThread.Start();
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_33d02437d135341f0800e3d415312ae8.gif            
catch (ThreadStateException)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                Console.WriteLine(
"oThread.ThreadState:" + oThread.ThreadState);
img_33d02437d135341f0800e3d415312ae8.gif                Console.Write(
"ThreadStateException trying to restart Alpha.Beta. ");
img_33d02437d135341f0800e3d415312ae8.gif                Console.WriteLine(
"Expected since aborted threads cannot be restarted.");
img_33d02437d135341f0800e3d415312ae8.gif                Console.ReadLine();
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_33d02437d135341f0800e3d415312ae8.gif            
return 0;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_105a1e124122b2abcee4ea8e9f5108f3.gif    }

img_05dd8d549cff04457a6366b0a7c9352a.gif}

img_a6339ee3e57d1d52bc7d02b338e15a60.gif
目录
相关文章
|
30天前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
30天前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
30天前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
30天前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
30天前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
30天前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍
|
30天前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
|
30天前
|
Java C#
C#学习相关系列之多线程(六)----Task的初级使用
C#学习相关系列之多线程(六)----Task的初级使用
|
30天前
|
C#
C#学习系列相关之多线程(四)----async和await的用法
C#学习系列相关之多线程(四)----async和await的用法
|
30天前
|
C# Windows
c#学习系列相关之多线程(三)----invoke和begininvoke
c#学习系列相关之多线程(三)----invoke和begininvoke