当前位置: 首页 > news >正文

有没有建网站的app建设局电工证与安监局电工证

有没有建网站的app,建设局电工证与安监局电工证,网站建设的重要性意义,从化区建设局网站文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 异步与同步运行结果 lock单线程运行结果 多线程运行结果 使用lock运行结果 C# 多线程 进程与线程 进程#xff1a;进程就是一个应用程序#xff0c;… 文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 异步与同步运行结果 lock单线程运行结果 多线程运行结果 使用lock运行结果 C# 多线程 进程与线程 进程进程就是一个应用程序对电脑的各种资源的占用 线程线程是程序执行的最小单位任何操作都是线程完成的线程依托进程存在的一个进程可以有多个线程 无参数的子线程 public static void ChildThread1(){Console.WriteLine(Child thread1 is starts);}带参数的子线程 ChildThread2是带参数的子线程所以要使用ParameterizedThreadStart类型的委托来指定子线程 如果使用的是不带参数的委托不能使用带参数的Start方法运行线程否则系统会抛出异常。 但使用带参数的委托可以使用thread.Start()来运行线程这时所传递的参数值为null。 特别注意ParameterizedThreadStart委托的参数类型必须是object的 using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{public static void ChildThread1(){Console.WriteLine(Child thread1 is starts);}//注意ParameterizedThreadStart委托的参数类型必须是object的public static void ChildThread2(object obj){Console.WriteLine(Child thread2 is starts,the parameter is {0}, obj);}public static void Main(){ThreadStart thread1 new ThreadStart(ChildThread1); //通过ThreadStart委托指定子线程的方法ParameterizedThreadStart thread2 new ParameterizedThreadStart(ChildThread2); //有参的委托Console.WriteLine(MainThreadCreating the child thread1);Console.WriteLine(MainThreadCreating the child thread2);Thread childThread1 new Thread(thread1); //创建子线程1Thread childThread2 new Thread(thread2);//创建子线程2childThread1.Start(); //运行子线程1childThread2.Start(子线程2的参数);//运行子线程2传递参数//如果使用的是不带参数的委托不能使用带参数的Start方法运行线程否则系统会抛出异常。//但使用带参数的委托可以使用thread.Start()来运行线程这时所传递的参数值为null。Console.ReadKey();}} } 运行结果 销毁线程 Abort() 使用Abort()中止子线程. 通过抛出 threadabortexception 在运行时中止线程。这个异常不能被捕获如果有 finally 块控制会被送至 finally 块。 using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{public static void ChildThread1(){Console.WriteLine(Child thread1 is starts);}//注意ParameterizedThreadStart委托的参数类型必须是object的public static void ChildThread2(object obj){Console.WriteLine(Child thread2 is starts,the parameter is {0}, obj);}public static void ChildThread3(){try{Console.WriteLine(Child thread3 starts);for (int i 0; i 5; i){Thread.Sleep(100);Console.WriteLine(i);}Console.WriteLine(Child Thread3 Completed);}catch (ThreadAbortException e){Console.WriteLine(Thread Abort Exception);}finally{Console.WriteLine(Couldnt catch the thread Exception);}}public static void Main(){ThreadStart thread3 new ThreadStart(ChildThread3);Console.WriteLine(MainThreadCreating the child thread3);Thread thread new Thread(thread3);thread.Start();//停止主线程1000Thread.Sleep(2000);Console.WriteLine(In Main: Aborting the Child thread);thread.Abort();Console.ReadKey();}} }运行结果 ThreadPool和Task using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{public static Thread t null;public static void ChildThread1(){int i 5;while (i 0){Console.WriteLine(string.Format(线程【1】的i:{0} , i));Thread.Sleep(10);i--;}Console.WriteLine(线程【1】结束);//Console.WriteLine(Child thread1 is starts);}//注意ParameterizedThreadStart委托的参数类型必须是object的public static void ChildThread2(object obj){int i 5;while (i 0){Console.WriteLine(string.Format(线程【2】的i:{0} , i));Thread.Sleep(10);i--;}Console.WriteLine(线程【2】结束);}public static void ChildThread3(){int i 5;while (i 0){Console.WriteLine(string.Format(线程【3】的i:{0} , i));Thread.Sleep(10);i--;}Console.WriteLine(线程【3】结束);}public static void Main(string[] args){t new Thread(new ThreadStart(ChildThread1));t.Start();//用线程池ThreadPool.QueueUserWorkItem(ChildThread2, new object());//用Task方法创建System.Threading.Tasks.Task.Factory.StartNew(ChildThread3);Console.ReadLine();}} } 运行结果 线程都是独立的不会互相影响。 异步与同步 C# 5.0引入了异步方法Async Methods的概念使得编写异步代码变得更加容易。异步方法使用async关键字标记返回类型必须是Task或Task方法中使用await关键字来等待异步操作完成。通过使用异步方法可以在不阻塞主线程的情况下执行耗时操作从而提高程序的并发性和响应性。示例如下 using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Http; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{public static async Task Main(string[] args){await DownloadWebsiteAsync();Console.ReadKey();}static async Task DownloadWebsiteAsync(){using (HttpClient client new HttpClient()){string website https://www.example.com;string content await client.GetStringAsync(website);Console.WriteLine(等待异步执行完成);}}} }运行结果 lock 如果你想控制多线程的线程的执行顺序就需要用到lock 参考链接https://blog.csdn.net/u012563853/article/details/124767902 单线程 using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Http; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{static int a 0;static int b 0;private static object o new object();static void Main(string[] args){methodA();methodB();Console.ReadKey();}private static void methodA(){Console.WriteLine(我是A方法);}private static void methodB(){Console.WriteLine(我是B方法);}private static void methodC(){Console.WriteLine(我是C方法是随机出现的);}} }这样是按顺序执行的因为是单线程的先执行methodA再去执行methodB 运行结果 多线程 我们增加了多线程就是让A和B方法同时执行此时结果就是不可控制的。有时候先执行B方法有时候先执行A方法。先执行B方法。 using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Http; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{static int a 0;static int b 0;private static object o new object();static void Main(string[] args){//methodA();//methodB();Thread t1 new Thread(methodA);Thread t2 new Thread(methodB);t1.Start();t2.Start();Console.ReadKey();}private static void methodA(){a 1;Console.WriteLine(我是A方法a a);Thread.Sleep(2000); //暂停5秒b 2;Console.WriteLine(我是A方法b b);}private static void methodB(){a;Console.WriteLine(我是B方法a a);Thread.Sleep(1000); //暂停1秒b;Console.WriteLine(我是B方法b b);}private static void methodC(){Console.WriteLine(我是C方法是随机出现的);}} }运行结果 所以我们可以使用lock去锁住代码段锁住的这段代码此时只能有一个线程去访问只有等这个线程访问结束了其他线程才能访问。 使用lock using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Http; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{static int a 0;static int b 0;private static object o new object();static void Main(string[] args){//methodA();//methodB();Thread t1 new Thread(methodA);Thread t2 new Thread(methodB);t1.Start();t2.Start();Console.ReadKey();}private static void methodA(){lock (o){a 1;Console.WriteLine(我是A方法a a);Thread.Sleep(2000); //暂停5秒b 2;Console.WriteLine(我是A方法b b);}}private static void methodB(){lock (o){a;Console.WriteLine(我是B方法a a);Thread.Sleep(1000); //暂停1秒b;Console.WriteLine(我是B方法b b);}}private static void methodC(){Console.WriteLine(我是C方法是随机出现的);}} }运行结果 这样也是等效的 Enter相当于进入这个代码块Exit是退出这个代码块。当这个代码块再运行的时候其他线程就不能访问。Monitor中的{}可以去掉不影响。
http://www.w-s-a.com/news/689448/

相关文章:

  • 欧阳网站建设2022华为云营销季
  • 快速学做网站高水平的大连网站建设
  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况
  • 网站开发工具安卓版专业小程序商城开发
  • 网站不备案影响收录吗深圳住房网站app
  • 交网站建设域名计入什么科目开发平台教程
  • 个人网站定制北京快速建站模板
  • 河南海华工程建设监理公司网站高端论坛网站建设
  • 网站建设网络推广方案图片编辑器免费
  • 如何用dw做网站设计设计头条
  • 网站建设基础及流程北京商场购物中心排名
  • 青州市城乡建设局网站自建网站步骤
  • wordpress文章延迟加载优化设计答案四年级上册语文
  • 做网站源码要给客户嘛怎么在运行打开wordpress
  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp