随笔分类 - C#
摘要:在线程执行的地方使用try..catch..捕获不到异常首先,线程内部不应该出现异常,所以首选处理方式是在Task中使用try..catch..把异常处理掉Task中可能会抛出多个异常,应该使用AggregateException捕获多线程中所有异常。AggregateException是一个集合
阅读全文
摘要:一、异常的抛出与进程终止为了简化开发者基于task进行异步编程的难度, .NET Framework4.5改变了未监测异常的默认行为,尽管未监测异常依然会触发UnobservedTaskException异常,但进程默认情况下不再会终止。取而代之的是,异常触发后,运行时会自动处理,不管事件处理器是否
阅读全文
摘要:常规Thread中处理异常 使用Thread创建的子线程,需要在委托中捕捉,无法在上下文线程中捕捉 static void Main(string[] args) { ThreadStart threadStart = DoWork; Thread thread = new Thread(threa
阅读全文
摘要:1.对于Thread操作的异常处理 public static void Main() { try { Thread th = new Thread(DoWork); th.Start(); } catch (Exception ex) { // Non-reachable code Console
阅读全文
摘要:历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持。微软将C#提交给标准组织ECMA,C# 5.0目前是ECMA发布的最新规范,C# 6.0还是草案阶段,C# 7.1是微软当前提供的最新规范。 这里仅仅列个提纲
阅读全文
摘要:content-Type: multipart/form-data boundary=ceshi(分组) 请求体中是按照一定格式拼的串,大致就是--ceshi **** --ceshi **** --ceshi **** --ceshi-- 这样的格式。 因为最终是发送请求流,这些请求体中的内容都需
阅读全文
摘要:using (var client = new HttpClient()) { using (var multipartFormDataContent = new MultipartFormDataContent()) { var values = new[] { new KeyValuePair(
阅读全文
摘要:一、内存上连续存储,节约空间,可以索引访问,读取快,增删慢 Array:在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快--增删慢,长度不变 { //Array:在内存上连续分配的,而且元素类型是一样的 //可以坐标访问 读取快--增删慢,长度不变 Console.WriteLine(
阅读全文
摘要:1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashta
阅读全文
摘要:.NET 3.5在System.Collections.Generic命名空间中包含一个新的集合类:HashSet<T>。这个集合类包含不重复项的无序列表。这种集合称为“集(set)”。集是一个保留字,所以该类有另一个名称HashSet<T>。这个名称很容易理解,因为这个集合基于散列值,插入元素的操
阅读全文
摘要:WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参 ContextMenu无论定义在.cs或.xaml文件中,都不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}
阅读全文
摘要:问题:经常遇到在C#类中的属性是大写开头,而在序列化后要求为小写或者有连接符,如此就需要我们对序列化和反序列化进行设置。一、JsonProperty属性解决 public class UserInfo { [JsonProperty("id")] public int Id{ set; get; }
阅读全文
摘要:C#基础之垃圾回收 1.自动垃圾回收是什么? 在非托管环境下程序员要自已管理内存,由疏忽的原因,通常会犯两种错误,请求内存后在不使用时忘记释放,或使用已经释放了的内存。但在托管环境下,程序员不用担心这两个问题,CLR的垃圾回收器在某种条件达到后自动释放已经不需要的内存,CLR能管理的只有内存,CLR
阅读全文
摘要:一什么是AppDomain 为了保证代码的键壮性CLR希望不同服务功能的代码之间相互隔离,这种隔离可以通过创建多个进程来实现,但操作系统中创建进程是即耗时又耗费资源的一件事,所以在CLR中引入了AppDomain的概念,AppDomain主要是用来实现同一进程中的各AppDomain之间的隔离,Ap
阅读全文
摘要:一、什么是AOP AOP(aspect oriented programming)面向切面编程,意思是面向某一个方向编程,和装饰器和代理作用有点像,但是解耦成都比前边的要好。 我们通过AOP实现日志添加、异常处理、事务处理,消息加工等。 C# 通过 System.Runtime.Remoting.P
阅读全文
摘要:有这么个场景,A线程执行A函数,B线程执行B函数,C线程执行C函数,并且ABC函数要按顺序执行,如何实现 我们可以利用Monitor和ConcurrentDictionary来实现。 Monitor是比lock更灵活操作,再.net中,lock在中间语言会被翻译成Monitor; Concurren
阅读全文
摘要:一、单例模式的实现以及标准 1、实例要是static类型,保证内存中只有一份copy 2、不能够外部创建,也就是通过关键字private私有化构造函数 3、提供一个外部访问方法GetInstance 4、无论何时必须考虑线程安全问题 二、懒汉模式 需要时才创建,因此称作懒汉模式,代码示例如下: pu
阅读全文
摘要:1、 启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状 态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run() 方法可以产生必须退出的标志来停止一个线程。 2、 接口是否可继承接口? 抽象类是否可实
阅读全文
摘要:1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashta
阅读全文
摘要:MVVM简介 MVVM模式由Model,View,ViewModel三部分组成。 Model需继承INotifyPropertyChange(属性修改通知) ViewModel负责业务逻辑,连接View和Model View上面的控件绑定model和命令(command) 注:数据绑定binding
阅读全文