- 博客(46)
- 收藏
- 关注
原创 C#基础教程(十三) VS平台与目标平台
平时开发C#时候,经常会遇到这个错误,其他信息: 未能加载文件或程序集"32BitLib, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null"或它的某一个依赖项。试图加载格式不正确的程序,由此拉开程序集多少位大幕。(一) bit位查看要查看多少位程序集,可以利用VS2013 开发人员命令提示,打开这个.bat,可以发现里面配了很多环境路径,无非里面有一些.exe,用命令行启动程序而已。查看c#程序集dll,用一个corflagse.xe工具,在
2022-04-01 13:45:42
4865
原创 C#基础教程(一).NET框架
CLI的定义:Common Language Infrastructure公共语言基础结构,C#生成的不是处理器能直接解释的指令,而是一种中间语言指令,即CIL。
2022-03-22 16:59:35
6055
1
原创 C#基础教程(十二) 深扒ConcurrentDictionary
一 问题最近用CocurrentDictionary遇到一个问题,暂时无法理解,多线程操作,foreach循环报错:关键字不在字典中。所有线程都没有删除元素,只做没key增加和有key修改的操作,更奇怪的是在中断时看了keys数组集合,明明有,闹心又无语。逻辑大致如下,有会的大佬帮我解释下://报错:关键字不在字典中,keys里明明有当前出错keyoreach(var key in conDic.keys){ byte[] byts=conDic[key]}二 理解Concurre
2021-11-18 10:46:12
4237
原创 Android基础教程(十)build.gradle文件
gradle是一个工具,同时它也是一个编程框架。使用这个工具可以完成app的编译打包等工作。一.defaultConfigandroid { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { applicationId "com.example.test" minSdkVersion 25 targetSdkVersion 28 v.
2021-09-09 14:36:27
437
原创 C#基础教程(十一)字符编码ASCII,Unicode 和 UTF-8
字符编码,这个概念虽然不需要具体深入去了解,经常默认选择一下,但仔细去研究一下,发现很有意思,看到一篇文章,感觉非常好,很值得推荐给各位。
2021-08-16 11:01:14
5939
原创 C#基础教程(十)软件打包
软件打包很多年前用过,当初用的好像是微软Install Shield Limited Edition,时过境迁,再次想做个安装文件,甚至无从下手,总结出一个原因,hen'jian'da
2021-06-16 16:10:13
5219
1
原创 C#基础教程(八)异步编程
说到异步编程,前一章的Task内容也是异步编程,这篇主要讲讲.net5.0中的新异步形式——异步方法及委托形式的异步调用。(一)异步方法async,await是异步方法的主要语法标志,两者的关系:首先一个被标记为async的方法,可以没有await调用,只不过会有编译警告。这是很显然的,不是把一个方法标记成async这个方法就成了异步调用的方法了。async这个关键词其实反而是可以省略的,这个关键词存在的意义是为了向下兼容,为await提供上下文,主要是await表达式开启了异步,我们通过下面一个异
2021-04-01 10:02:07
1368
原创 C#基础教程(九)容器foreach和多线程安全问题
闲话少说。在单线程操作List,Dictionary等集合的时候一点问题都没有,但是在多线程情况下,问题就出来了,经常会报错。我们可以看看源码,List的Add方法是线程不安全的,List的源码中的Add方法,使用了每次当当前的元素达到上限,通过创建一个新的数组实例,并给长度翻倍的操作。如果单线程操作不会有问题,直接扩容,然后继续往里面加值。下面是List的Add方法和核心逻辑:也就是说,当多个线程同时添加元素,且刚好它们都执行到了扩容这个阶段,当一个线程扩大了这个数组的长度,且进行了+1操作后
2021-03-25 09:47:35
2057
原创 C#基础教程(七)Task
在.net4.0之后MS就推出了Task多线程,作为之前一直使用Thread和ThreadPool的开发者来说,Task显然更容易管理线程,虽然也够用,但还是要保持与时俱进嘛~Task task=new Task(()=>{xxx});task.Start();//这是一种Task多线程构造方法,不会阻塞,是Action委托类型,用不到返回值Task<type> task=Task<type>.Run(()=>{xxx});timerTxt.Text= ta
2021-03-03 11:25:22
879
原创 C#基础教程(二)代码规范
无规矩不成方圆,C#开发也有自己的"规矩",遵循一定的代码规范,随之带来的好处使程序更加易读,也会变得非常的漂亮,提升自己颜值的一个过程。我们自己开发也要注意遵循,从网上总结了一套,我觉得行之有效。尽情期待!...
2020-07-29 09:08:31
265
原创 C#基础教程(六)容器的LINQ用法
更久没更了,心思又回归到代码学习中了。很多时候,我们需要对一些容器中的数据进行筛选,通常的做法可能用for/foreach循环来判断,但.net3.5就开始支持LINQ语言,这样使得我们敲代码更加优雅,提升效率,让代码显得更有"质感"。小编我个人认为,代码需要探索精神,突破自己的固有壁垒才逐步提升自己的代码水平,可惜小编对上班不是很感兴趣,志不于此。人走向成功的第一步首先是敢想,梦都不敢做,谈何实现,此话谨献于志在想创立中国500强级公司的有为青年,当然需要脚踏实地,一步一个脚印。好像扯多了,此篇会不断
2020-07-24 14:08:36
325
原创 C#基础教程(五)Null&&““&&Dispose()
平时敲代码中,经常碰到标题中的知识点,很模糊,现在进行梳理下:Section One"":被赋值为“”的字符串变量,会在栈上保存一个地址(占4个字节),该地址会指向 同时在堆上分配一个长度为0的内存空间(存放字符串的值)。null:被赋值为null的变量,会在栈上保存一个地址(占4个字节),该地址不会指向堆上的任何内存空间(1、初始赋值时不分配内存;2、将原来所指的内存空间变为不可达)...
2019-05-13 19:59:25
619
原创 C#基础教程(十三)消息队列——MSMQ
Net使用消息队列,借助windows组件来存储要完成的一系列任务,不用程序使用同一个队列,方便不同程序之间的数据共享和协作。队列分事务性队列和非事务性队列,默认创建的是非事务性队列。那么什么是事务性队列呢?事务性队列将消息保存在磁盘上,实现了持久化,也就是说当我们关机,断电后,下次再启动机器,我们的消息依然保存在队列里面,而非事务性队列则将消息保存在内存中,也就是说我重启电脑后,队列里面的消...
2019-04-22 10:56:56
4473
原创 WCF入门教程(二)IIS宿主Web服务运用程序
上一篇我们写了WCF控制台寄宿运用程序,其实不管宿主是Winform/WPF或者Windows服务,都是通过Button或者服务起停变更ServiceHost的开闭函数,虽换了框架,但是内容还是控制台程序里面的程序。WCF也是一款Web应用发布,注定它能进行IIS发布,那么不禁联想到Web服务。我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件...
2019-04-10 18:37:28
416
原创 WCF入门教程(一)WCF控制台寄宿服务
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。它跟WebService一样,也是Windows平台上开发分布式应用的一种方式。 ...
2019-04-08 20:23:28
1345
原创 Redis——Windows安装
本篇只谈安装,后续会深入讲解Redis,比如它的内存管理,快照,订阅等待。针对不同的用户,Redis有Windows和Linux两种环境安装, 官网上下的是Statble版是Linux,大家一定要注意。由于本人做本地端,所以以下谈的是Windows安装。本文Redis下载地址:https://github.com/MSOpenTech/redis/releases,今天介绍,Redis版本用...
2019-03-29 13:50:17
200394
33
转载 WPF入门教程(十六)命名空间XAML
我们通常能看到xaml文件开头有一个类似http协议的字串,因为是自动生成,也没太在乎。但是在迁移引用第三方控件的项目时,往往会因此而引发一些错误,我们来看看这些http字串到底表示着什么?<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006...
2018-12-04 19:05:31
1463
原创 C#基础教程(四)接口实现事件
在写WPF教程的MVVM篇章时,会碰到接口INotifyPropertyChanged,里面只有一个event PropertyChangedEventHandler PropertyChanged事件,因此引申出本章。可以在接口中声明事件,然后在类中实现该事件的引用。在为方法订阅事件时,可以订阅接口声明的事件,也可以订阅类中的事件。我们看下面这个例子。public class Cus...
2018-11-14 15:26:29
2176
原创 WindowsService教程(一)创建调用
WindowsService,比较浅显的理解就是放于后台跑的应用程序,像我们PC,其实都跑着很多后台程序,我们可能都不知道,因此我认为这是对于一些经常性重复性处理,用它非常合适,比如从数据库不断写数据,写个应用放于桌面上跑,一不小心还可能被关掉,安全性美观性都会大大降低。在写服务的时候不可避免的入过某些坑,对于一些定时性处理任务,我觉得用服务不如用Windows自带的任务计划程序,可以选择启动...
2018-10-26 17:42:23
1374
原创 C#基础教程(二)ref&out和const&readonly
用C#也开发了也好几个项目,再一章章写基本语法没啥效果,一些很基础的或已经熟用的就不写了,主要写一些常用但概念模糊、未熟记及重要的知识点。第一篇就写写数值传参,或许你会发现,跟C++很神似。值传参时,实参可能会是一个值类型或者引用类型的变量。何谓值类型和引用类型?值类型就是真实数据存栈中,引用类型就是真实数据存堆中,地址存堆中,是不是很有变量和指针的味道。如果是值类型,栈中形参复制一个真实数据......
2018-10-11 10:58:02
1208
转载 WPF教程(十三)路由事件
属性系统在WPF中得到升级、进化为依赖属性。事件系统在WPF中也被升级进化成为路由事件(Routed Event),并在其基础上衍生出命令传递机制。路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件。路由事件与一般事件(CLR)的区别在于:路由事件是一种用于元素树的事件,当路由事件触发后,它可以向上或向下遍历可视树和逻辑树,他用一种简单而持久的方式在每个...
2018-09-26 16:29:25
1018
转载 WPF教程(十四)命令
命令这东西很有意思,简明一点说,它是一种逻辑,但这种逻辑可以被多种源调用,可以作用于多种目标上。如我们常见的"复制","剪切"等命令,它们本身就是一种逻辑——对剪切板进行操作的逻辑行为,不过,你会发现,它们不仅可以在菜单项中使用,也可以在工具栏按钮上使用,也可以通过快捷键Ctrl + C等来调用。(一)命令模型命令(Command):WPF的命令实际上就是实现了ICommand接口的类,平...
2018-09-26 13:40:55
965
原创 WPF教程(十五)MVVM框架
作者本人以前是做C++的,当然很顺利的进入到WinForm,这也让我基本没有View-Model思维。学习WPF说白点也是因为其强大的UI,其实我忽视了很重要的一点,直到接触了MVVM框架,其实Web前后端开发已经指明了未来编程趋势,各干各的:完美的前段和强劲的后端,个人是这么认为的。WPF是微软视其为下一代用户界面技术,XAML的使用就是为了降低耦合度。那么我们不得不说说WinForm和WP......
2018-09-26 13:33:54
9154
2
转载 WPF教程(十一)模板入门一
在前面一篇我们粗略说了Style,如果要自定义一个个性十足的控件,仅仅依靠样式和行为是不行的,他们只能通过控件的既有属性来简单改变外观,还需要有ControlTemplate来彻底定制,这是改变Control的呈现,也可以通过DataTemplate来改变Data的呈现,对于ItemsControl,还可以通过ItemsPanelTemplate来改变Items容器的呈现。从上段文字可以总结出...
2018-09-21 17:30:57
1245
转载 WPF教程(九)样式入门二
在我看来,WPF的Trigger是一个非常聪明的设计,Winform要大量的代码才绘出的皮肤,在这里轻松就能搞定。但我也不是鄙视Winform,它也有自己的优势,抛开界面美化,在一些控件的使用上,明显比WPF好用,就拿DateTimePicker控件,一个能具体到小时,一个只有日期。我坚信存在即合理,各有用处。言归正传,触发器,是System.Windows.TriggerBase的派生类的实...
2018-09-13 15:15:17
1022
转载 WinForm教程(一)App.config等配置文件
最近又回到用WinForm开发项目,难免少不了跟数据库打交道。平时也会在App.config中写连接字串,但没有仔细深究过,当然除了写数据库字串,肯定还能写别的,我们无论在控制台程序还是窗体程序,都会遇见他,乘代码敲累之际,写篇博客平缓下。应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是按需更改,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件又...
2018-09-09 16:38:09
12542
转载 WPF教程(四)RelativeSource属性
我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定,这种办法的意思是指当前元素和绑定源的位置关系。(1)控件关联自身的属性——Self<Window x:Class="RelativeSource...
2018-08-13 15:11:56
21824
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人