C#多线程整理

来源:互联网 发布:php导航源码 编辑:程序博客网 时间:2024/06/13 17:30

C#多线程整理

Thread

//直接运行new Thread((s)=>Console.WriteLine(s)).Start("thread1")Thread t = new Thread(delegate () { Console.WriteLine("fuck♂you2"); Thread.Sleep(1000); });t.IsBackground = true; //程序推出后结束,默认falset.Start(); //运行t.Abort(); //停止t.Join();//直到t执行完才进行主线程int[] a = { 1, 3, 5, 2, 4, 6 };  //延时排序for (int i = 0; i < a.Count(); i++){    new Thread(ss).Start(a[i]);}wh.Set();
static EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.ManualReset); private static void ss(object num){     int n = (int)num;     wh.WaitOne();     Thread.Sleep(n*100);     Console.Write(n.ToString() + ' ');}

ThreadPool

for (int i = 0; i < 5; i++){    ThreadPool.QueueUserWorkItem(fun,"Hello from threadpool"+i.ToString());}
private static void fun(object var) {      string s = (string)var;      Console.WriteLine(var);}

Task

Task<string> t1 = Task.Run(() => "task1");t1.Wait();Console.WriteLine(t1.Result + " form task");Task<int> t3 = new Task<int>((x)=> { int num = (int)x; return num * 2; }, 1);t3.Start();Task<int> t4 = t3.ContinueWith<int>((x) => { int num = 2*x.Result; Console.WriteLine(num.ToString());return num; });//t3执行后执行Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(dl => { Console.WriteLine("bye"); }); //延时后执行

async await

asfun();
private static async void asfun(){    int res = await cal();    Console.WriteLine(res.ToString()+" async end");}private static async Task<int> cal(){    int a=1;    for(int i=0;i<10;i++)    {        a *= 2;       }    return a; }
0 0
原创粉丝点击