zoukankan      html  css  js  c++  java
  • C#多线程开发总结

    1.         关闭Form窗体进程还在的问题
    方法一:Thread.IsBackground = true;
    方法二:System.Environment.Exit(0);
    方法三:FormClosing方法内手动释放所有托管资源.
    注意:强行关闭时都要做好全局未处理异常的处理.

    2.         Thread.Abort()强制中止报错的问题
    强制中止一定会报错,只有一个变通的办法,采用标识,通过标识状态来判断线程是否可以进入下一个任务处理,当前线程让它跑完。

    3.         多线程更新界面解决办法
    SynchronizationContext去更新界面,eg
    _synchContext.Post(_ =>

    {

        this.lblTest.Text = “aa”;

    }, null);

    4.         ThreadPool 自定义Thread[] 如何选择
    ThreadPool
    .net提供一个线程池,该线程池可用于发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。(MSDN)
    ThreadPool
    的优点系统提供一系列方法使用方便,而且它内部已经有优化,线程安全。
    ThreadPool
    的缺点无法有效的控制内部线程.

     

    5.  线程同步之lock

          lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。[MSDN]

          lock关键字实质是调用Monitor.Enter和Monitor.Exit两个方法的简化语法.


    --------------------------------------------------------------------------
    Daniel Chow's Blog - 不管你在哪里,都要有一颗创业的心!
    http://www.cnblogs.com/DanielChow/
  • 相关阅读:
    Linq 入门系列 [Take,Skip,TakeWhile,SkipWhile]篇
    SqlString 引发的思考
    DLINQ
    Wrf 格式播放器
    仙剑奇侠传4序列号
    Asp.Net程序性能 浅谈
    Linq 扩展函数的应用
    正则表达式积累
    ajax 之取消服务器任务[转]
    Linq 演变的过程(delegate => Lamb => Linq)
  • 原文地址:https://www.cnblogs.com/DanielChow/p/2040908.html
Copyright © 2011-2022 走看看