Fork me on GitHub
摘要: 大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果。当然你也可以尝试修改或者重复你的请求信息。本文主要介绍如何使用代码来实现fiddler的功能。Fiddler Core APIFiddler Core几乎实现了你能用fiddler做的所有功能。直接在NuGet上搜... 阅读全文
posted @ 2015-12-13 12:41 独上高楼 阅读(5573) 评论(2) 推荐(6) 编辑
摘要: 大家在编程过程中都会用到一些异步编程的情况。在c#的BCL中,很多api都提供了异步方法,初学者可能对各种不同异步方法的使用感到迷惑,本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法。BeginXXX,EndXXX模式在.Net Framework 2.0中,最常见的方法是BeginXXX,... 阅读全文
posted @ 2015-11-17 19:33 独上高楼 阅读(1874) 评论(2) 推荐(3) 编辑
摘要: 上一节介绍了使用信号量进行同步,本节主要介绍一些非阻塞同步的方法。本节主要介绍MemoryBarrier,volatile,Interlocked。MemoryBarriers本文简单的介绍一下这两个概念,假设下面的代码:using System;class Foo{ int _answer;... 阅读全文
posted @ 2015-11-05 17:36 独上高楼 阅读(3755) 评论(3) 推荐(3) 编辑
摘要: 上一节主要介绍了使用锁进行同步,本节主要介绍使用信号量进行同步使用EventWaitHandle信号量进行同步EventWaitHandle主要用于实现信号灯机制。信号灯主要用于通知等待的线程。主要有两种实现:AutoResetEvent和ManualResetEvent。AutoResetEven... 阅读全文
posted @ 2015-11-02 19:56 独上高楼 阅读(2616) 评论(3) 推荐(6) 编辑
摘要: 通过锁来实现同步排它锁主要用来保证,在一段时间内,只有一个线程可以访问某一段代码。两种主要类型的排它锁是lock和Mutex。Lock和Mutex相比构造起来更方便,运行的也更快。但是Mutex可以在同一个机器上的不同进程使用。Monitor.Enter和Monitor.ExitC#中的lock关键... 阅读全文
posted @ 2015-10-30 20:50 独上高楼 阅读(4183) 评论(0) 推荐(2) 编辑
摘要: 上一节我们介绍了线程池相关的概念以及用法。我们可以发现ThreadPool. QueueUserWorkItem是一种起了线程之后就不管了的做法。但是实际应用过程,我们往往会有更多的需求,比如如果更简单的知道线程池里面的某些线程什么时候结束,线程结束后如何执行别的任务。Task可以说是ThreadP... 阅读全文
posted @ 2015-10-22 20:52 独上高楼 阅读(6047) 评论(0) 推荐(4) 编辑
摘要: 上一章我们了解到,由于线程的创建,销毁都是需要耗费大量资源和时间的,开发者应该非常节约的使用线程资源。最好的办法是使用线程池,线程池能够避免当前进行中大量的线程导致操作系统不停的进行线程切换,当线程数量到达了我们设置的上限,线程会自动排队等待,当线程资源可用时,队列中的线程任务会依次执行,如果没有排... 阅读全文
posted @ 2015-10-21 21:21 独上高楼 阅读(4005) 评论(1) 推荐(3) 编辑
摘要: 为什么使用多线程使用户界面能够随时相应用户输入当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在不同的线程中进行。效率原因应用程序经常需要等待一些资源,如等待网络资源,等待io资源,等待用户输入等等。这种情况下使用多线程... 阅读全文
posted @ 2015-10-21 21:11 独上高楼 阅读(4071) 评论(3) 推荐(8) 编辑
摘要: SharePoint 的CSOM都是通过HttpRequest来实现和SharePoint服务器的交互的,那么我们如何设置HttpWebRequest的一些特性呢,如Cookie,WebProxy?static void Main(string[] args) { ... 阅读全文
posted @ 2015-08-06 17:04 独上高楼 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 了解Dictionary的开发人员都了解,和List相比,字典添加会慢,但是查找会比较快,那么Dictionary是如何实现的呢?Dictionary的构造下面的代码我看看Dictionary在构造时都做了什么: private void Initialize(int capacity... 阅读全文
posted @ 2015-07-22 00:53 独上高楼 阅读(8156) 评论(23) 推荐(24) 编辑