随笔分类 - .net
,net框架与环境问题
摘要:在windows系统中,我们总能感受到一些开机或者登录后,就会弹出软件更新的小弹窗,或者其他软件弹出的各种小窗口。如何实现这种功能呢? 实现开机或者登录后检测更新、弹出小弹窗,有两种方法。一种是写一个小程序,然后加入到开机自启注册表中,让系统运行它;另一种是写一个任务计划程序,由它控制更新或者执行其
阅读全文
摘要:初识gRPC还是一位做JAVA的同事在项目中用到了它,为了C#的客户端程序和java的服务器程序进行通信和数据交换,当时还是对方编译成C#,我直接调用。 后来,自己下来做了C#版本gRPC编写,搜了很多资料,但许多都是从入门开始?调用说“Say Hi!”这种官方标准的入门示例,然后遇到各种问题……
阅读全文
摘要:Newtonsoft.Json 是.net下广泛应用的JSON操作库,使用方便、数据可视化度高。但也总会踩坑…… 如果需要序列化的对象实现了IEnumerable接口,Newtonsoft.Json就会认为这个对象是一个数组,然后遍历这个对象,输出其中的值。如果这个对象还包含有其他的属性,那其他属性
阅读全文
摘要:1、对网络适配器进行配置 string ethernetIP = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetIP"].Trim().ToString(); string ethernetSubnetMask
阅读全文
摘要://创建一个进程 Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动 p.StartInfo.RedirectStanda
阅读全文
摘要:Timer可以对方法的执行时间进行调度,可以是经过指定的时间段后执行,也可以是在之后每隔一段时间执行一次。但不要创建太多的定时器。全部的Timer都是由线程池中的1个线程提供支持的。如果Timer的数量太多,则执行回调方法会被延迟。 在空闲时,Timer线程会执行线程池中的任务,Timer会由下一个
阅读全文
摘要:进程之间的通信是为了解决不同进程之间的数据传输问题,这样可以让不同程序交互数据。实现进程通信的方式:1、剪切板;2、COM;3、内存映射文件;4、WCF 1、剪切板Clipboard在进程间传送对象 剪切板是一个供应用程序使用的公有区域。在.NET中定一个了一个DataFormats类,此类包含一些
阅读全文
摘要:在前面的《基于任务的异步编程模式(TAP)》文章中讲述了.net 4.5框架下的异步操作自我实现方式,实际上,在.net 4.5中部分类已实现了异步封装。如在.net 4.5中,Stream类加入了Async方法,所以基于流的通信方式都可以实现异步操作。 1、异步读取文件数据 public stat
阅读全文
摘要:通过代码操作防火墙的方式有两种:一是代码操作修改注册表启用或关闭防火墙;二是直接操作防火墙对象来启用或关闭防火墙。不论哪一种方式,都需要使用管理员权限,所以操作前需要判断程序是否具有管理员权限。 1、判断程序是否拥有管理员权限 需要引用命名空间:System.Security.Principal 2
阅读全文
摘要:对于某些程序,我们只允许它使用某些特定端口、网络类型或者特定IP类型等信息。这时候,需要使用到防火墙里面的“高级设置”,创建某些特定的入站或者出栈规则,以规避其程序使用允许端口等意外的信息。 下面以创建出站规则为例,编写一条出站规则,规避除允许规则以外的通过防火墙。创建规则时,会使用到接口INetF
阅读全文
摘要:将特定程序加入防火墙组,与将特定端口加入防火墙流程类似。详情见“C# 防火墙操作之特定端口”。其主要代码为:
阅读全文
摘要:针对将特定端口加入到windows系统的防火墙中,使其允许或禁止通过防火墙。其大概思路是: 删除规则比较简单:创建防火墙实例,直接移除某种通信类型的端口就行。
阅读全文
摘要:在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体。因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态加载字体。 1.1、使用代码安装字体 注意:安装字体时,需要windows的管理员权限。 [DllI
阅读全文
摘要:有时候,我们的程序需要启动一些子进程,如嵌入的图形程序。 当启动一个进程后,获得这个进程信息Process,然后其内部在某个时刻启动了一个子进程,这个时候就涉及程序域和进程树的概念。当我们通过非正常操作的方式结束前面获得的进程信息Process时(如Kill掉),可能并没有实际结束子进程。因为当有主
阅读全文
摘要:Winform改变语言类型比较复杂,需要根据不同语言应用语言资源。而软件在进行语言切换时,需要将当前的UI文化线程引用对应的语言类型。常用的有三种方式,此处使用两种,对比发现其中的优缺点:
阅读全文
摘要:在.net的异常机制中,有部分严重的编程错误(系统的某些Corrupted State Exceptions异常)是默认不被用户使用常规的异常捕捉方式捕捉到的。 微软的这种设计方式,是让用户必须处理该异常,否则程序将无法正常运行。目前发现两种情况,但解决方法通用。 1、AccessViolation
阅读全文
摘要:Parallel类是对线程的抽象,提供数据与任务的并行性。类定义了静态方法For和ForEach,使用多个任务来完成多个作业。Parallel.For和Parallel.ForEach方法在每次迭代的时候调用相同的代码,而Parallel.Invoke()方法允许同时调用不同的方法。Parallel
阅读全文