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

做app网站宁波网站关键词

做app网站,宁波网站关键词,搜狗推广下架,楼盘 东莞网站建设同步#xff0c;异步#xff0c;多线程#xff0c;你怎么看#xff1f; 原文:同步#xff0c;异步#xff0c;多线程#xff0c;你怎么看#xff1f;[原创]讲解同步与异步的帖子多如牛毛#xff0c;个人的理解#xff0c;简单地说同步就是串行#xff0c;异步就是并… 同步异步多线程你怎么看 原文:同步异步多线程你怎么看[原创]  讲解同步与异步的帖子多如牛毛个人的理解简单地说同步就是串行异步就是并行。同步的情况下A调用BA等B执行完成后接着执行自始至终只有一个线程在运行而异步时A调用BB执行A也继续执行这个过程中有两个线程在运行。本文通过winform下的一个实例讲解同步与异步的差别本文的例子很简单适合初学者。   1.同步   大家应该经常碰到这种情况点击界面上某个按钮或者某个控件后界面卡死的情况个人觉得其中一个原因可能是主线程的问题界面主线程在后台处理其他任务没法同时响应用户的操作。看一个最简单的例子界面如下    代码 private void btnCalc_Click(object sender, EventArgs e)         {                int sum Calc(100);               rtxtMain.Text calc over, result is sum;               MessageBox.Show(计算完成, 提示);         }         private int Calc(int n)         {               int sum 0;               Thread.Sleep(TimeSpan.FromSeconds(20));               for (int i 0; i n; i)               {                     sum i;               }               return sum;         }   很明显使用这种方法时点击按钮后界面就卡住直到后台方法执行完才响应。原因是只有主线程在运行那么咱们再重新起一个新线程可以自己另起一个线程或者使用.NET提供的异步方法。     2.异步   .NET异步时重新从线程池中启动了一个线程本例中这个线程负责执行后台的方法界面主线程继续响应用户的操作。线程池线程执行完后台方法后弹出提示框提示主线程工作已做完。代码如下         public delegate int CalcEventHandler(int n);     //定义委托     public partial class MainFrm : Form       {             public MainFrm()              {                   InitializeComponent();                   Control.CheckForIllegalCrossThreadCalls false;          //禁用非法跨线程调用检查     }           private void btnCalc_Click(object sender, EventArgs e)             {                   CalcEventHandler mycalc new CalcEventHandler(Calc);                   AsyncCallback async new AsyncCallback(OnComplete);             //回调方法       mycalc.BeginInvoke(100, async, this is your data );                  //执行异步     }         private int Calc(int n)             {                   int sum 0;                   Thread.Sleep(TimeSpan.FromSeconds(20));                   for (int i 0; i n; i)                   {                         sum i;                   }                   return sum;             }    //异步完成后执行的回调方法         private void OnComplete(IAsyncResult asycResult)            {                 AsyncResult result (AsyncResult)asycResult;                 CalcEventHandler del (CalcEventHandler)result.AsyncDelegate;      //向下转换           int sum del.EndInvoke(asycResult);     //获取返回值                string data result.AsyncState ! null ? result.AsyncState.ToString() : string.Empty;           //获取传递的数据      rtxtMain.Text calc over, 结果为 sum , 传递信息为 data;                 MessageBox.Show(计算完成,提示);         //提示主线程   }     } 结果如下   这样界面不会出现卡死的情况可以提高用户体验。当然这只是一个简单的例子。     还有一种方法就是自己另外启一个线程代码如下   private void btnCalc_Click(object sender, EventArgs e)           {                   Thread tr new Thread(new ThreadStart(Calc));       //启动新线程           tr.Start();           }         private void Calc()      //重载方法      {                 Calc(100);           }           private int Calc(int n)           {                 int sum 0;                 Thread.Sleep(TimeSpan.FromSeconds(5));                 for (int i 0; i n; i)                 {                       sum i;                 }                 rtxtMain.Text calc over, 结果为 sum;             //提示移到这里     MessageBox.Show(计算完成, 提示);                return sum;           }     小结   1.这个例子很简单用于了解同步和异步的区别和作用。    2.同步和异步跟为委托和多线程是相关联的有兴趣的朋友继续学习委托和多线程相关知识。   本文写的很简单谢谢你的阅读如果有好的建议或方法欢迎留言一起交流~~           posted on 2014-03-14 15:27 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/3600676.html
http://www.sadfv.cn/news/353440/

相关文章:

  • wordpress友链页面seo是什么部门
  • 网站管理规划方案七牛做网站
  • 商城网站建设哪家效益快深圳企业网站制作推广运营
  • 邢台集团网站建设桂林北站怎么去阳朔
  • 获取网站访客qq号码程序下载网站开发后如何上线
  • 乐清网站建设公司有赞网站开发
  • 有没有做翻译赚钱的网站wordpress收集
  • 学校网站建设方案设计松溪网站建设wzjseo
  • 企业网站icp备案建设银行网站最近都打不开吗
  • 黄陂区建设局网站旅游网站在提高用户体验方面应做哪些工作
  • 甜品网站模板代码网站建设好学么
  • 网站建设的注意网页制作要学什么课程
  • 安徽康东建设工程有限公司网站wordpress支付宝捐赠插件
  • 福田网站建设公司乐云seo长沙企业网站制作服务报价
  • 免费制作一个自己的网站吗电脑记事本做复杂网站
  • 企业网站有哪四种类型自由软件开发者
  • 温州市网站制作多少钱专门做二手书的网站
  • 德兴市建设局网站建设网站的简单编程语言
  • 门户网站制作定做室内设计效果图手绘图
  • 北京制作网站的基本流程东莞南城最新通告
  • 个人博客网站怎么做wordpress 4.8.2漏洞
  • 咸阳专业网站建设非遗网页设计作品欣赏
  • 专业做医药招聘的网站html代码小游戏
  • 男女做啊免费视频网站php+mysql网站开发教程
  • 新手入门网站建设芜湖网站设计公司
  • 如何做视频网站流程网站建设游戏公司
  • 杭州 电子商务网站建设 网络服务wordpress编辑器图片
  • 安徽网站建设方案服务网站做等级保护
  • 网站设计制作全网优惠wordpress polling
  • 天津哪家做企业网站镇江百姓网