上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页
摘要: 建议77: 正确停止线程开发者总尝试对自己的代码有更多的控制。例如,“让那个还在工作的线程马上停止下来”。然而,并非我们想怎样就可以怎样的,这至少涉及两个问题。第一个问题 正如线程不能立即启动一样,线程也并不是说停就停的。无论采用何种方式通知工作线程需要停止,工作线程都会忙完手头最紧要的活,然后在它 阅读全文
posted @ 2017-12-06 16:43 指间的徘徊 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 建议76: 警惕线程的优先级线程在C#中有5个优先级:Highest、AboveNormal、Normal、BelowNormal和Lowest。讲到线程的优先级,就会涉及线程的调度。Windows系统是一个基于优先级的抢占式调度系统。在系统中,如果有一个线程的优先级较高,并且它正好处在就绪状态,系 阅读全文
posted @ 2017-12-06 16:40 指间的徘徊 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 建议75:警惕线程不会立即启动现代的大多数操作系统都不是一个实时的操作系统,Windows系统也是如此。所以,不能奢望我们的线程能够立即启动。Windows内部会实现特殊的算法以进行线程之间的调度,在某个具体的时刻,它会决定当前应该运行哪个线程。这反映到最底层就是某个线程分配到了一定的CPU时间,可 阅读全文
posted @ 2017-12-06 16:28 指间的徘徊 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 建议74:警惕线程的IsBackground在CLR中,线程分为前台线程和后台线程,即每个线程都有一个IsBackground属性。两者在表现形式上的唯一区别是:如果前台线程不退出,应用程序的进程就会一直存在,必须所有的前台线程全部退出,应用程序才算退出。而后台进程则没有这方面的限制,如果应用程序退 阅读全文
posted @ 2017-12-06 16:26 指间的徘徊 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 建议73:避免锁定不恰当的同步对象在C#中,让线程同步的另一种编码方式就是使用线程锁。线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成new出来的普通CLR对象。既然需要锁定的资源就是C#中的一个对象,我们 阅读全文
posted @ 2017-12-06 16:23 指间的徘徊 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 建议72:在线程同步中使用信号量所谓线程同步,就是多个线程在某个对象上执行等待(也可理解为锁定该对象),直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单地理解为在CLR中,值类型是不能被锁定的,即不能在一个值类型对象上执行等待。而在引用类 阅读全文
posted @ 2017-12-06 16:20 指间的徘徊 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 建议71:区分异步和多线程应用场景初学者有时候会将异步和多线程混为一谈。如果对它们之间的区别不是很清楚,很容易写出下面这样的代码: 上面的代码模拟了在一个Winform窗体程序中,单击Button获取某个网页的内容并显示出来。可以预见,如果该网页的内容很多,或者当前的网络状况不太好,获取网页的过程会 阅读全文
posted @ 2017-12-06 15:43 指间的徘徊 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 建议70:避免在调用栈较低的位置记录异常 并不是所有的异常都要被记录到日志,一类情况是异常发生的场景需要被记录,还有一类就是未被捕获的异常。未被捕获的异常通常被视为一个Bug,所以,对于它的记录,应该被视为系统的一个重要组成部分。 最适合记录异常和报告的是应用程序的最上层,这通常是UI层。假设存在这 阅读全文
posted @ 2017-12-06 15:40 指间的徘徊 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 建议69:应使用finally避免资源泄漏 除非发生让应用程序中断的异常,否则finally总是会先于return执行。finally的这个语言特性决定了资源释放的最佳位置就是在finally块中;另外,资源释放会随着调用堆栈由下往上执行。下面的代码验证了这一点,先定义一个需要释放的类: 再来模拟一 阅读全文
posted @ 2017-12-06 15:34 指间的徘徊 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 建议68:从System.Exception或其他常见的基本异常中派生异常 微软建议:从System.Exception或其他常见基本异常之一派生异常。在Visual Studio中输入Exception,然后按快捷键Tab,VS会自动创建一个自定义异常类: 这是一个标准的自定义异常,它同时告诉你, 阅读全文
posted @ 2017-12-06 15:25 指间的徘徊 阅读(298) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页