C#实践
_虹猫少侠
.NET Developer
展开
-
C# winform窗体打开后闪屏解决方法
将以下代码加入到窗体代码中 //解决窗口闪屏 protected override CreateParams CreateParams { get { CreateParams paras = base.CreateParams; paras.ExS...转载 2020-03-18 13:18:49 · 737 阅读 · 0 评论 -
C#目标平台x86下启动软键盘
#region 目标平台x86情况下启动系统软键盘 [DllImport("kernel32.dll", SetLastError = true)] public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr); [DllImport("kernel...原创 2020-03-18 09:04:25 · 403 阅读 · 0 评论 -
NLog输出日志到RichTextBox
输出日志到RichTextBox添加引用配置NLog.config调用Logger输出日志注意事项添加引用新建一个windows窗体应用程序后在项目中引用NLog和NLog.Windows.Forms在Form界面添加RichTextBox用以日志输出。配置NLog.config新建NLog.config文件。内容如下。该配置支持输出到文件和RichTextBox。NLog.co...原创 2020-03-16 16:52:36 · 2205 阅读 · 0 评论 -
多线程共享变量的原子操作(Interlocked 类)
Inrerlocked类介绍官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.interlocked?redirectedfrom=MSDN&view=netframework-4.8本文主要介绍如何使用Inrerlocked来对多线程中共享变量的原子操作。官方文档及示例已经介绍很清楚,不做过多描述...转载 2019-12-13 11:11:24 · 343 阅读 · 0 评论 -
asp.net core webapi自动生成api文档
Swashbuckle.AspNetCoreGitHub地址: https://github.com/domaindrivendev/Swashbuckle.AspNetCore本文主要介绍如何使用Swashbuckle.AspNetCore生成ASP.NET Core的web api文档使用步骤第一步:在vs中创建一个asp.net core web应用程序,然后选择api第二...原创 2019-12-13 09:24:06 · 797 阅读 · 0 评论 -
线程同步之AutoResetEvent和ManualResetEvent
AutoResetEvent和ManualResetEvent表示一个线程同步事件一:终止状态和非终止状态首先说说线程的终止状态和非终止状态。AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态。true表示终止状态(个人理解也就是可运行状态,根据理解应该是该线程的阻塞终止了),false表示非终止状态。 ...转载 2019-11-01 11:55:53 · 225 阅读 · 0 评论 -
BinaryFormatter序列化样例
BinaryFormatterBinaryFormatter详细介绍点击这里以二进制格式序列化和反序列化对象或连接对象的整个图形。以下样例实现了对象的序列化,反序列化,深拷贝using System;using System.IO;using System.Collections.Generic;using System.Runtime.Serialization.Formatter...原创 2019-10-31 14:10:23 · 433 阅读 · 0 评论 -
.net序列化库protobuf-net
来源于https://github.com/protobuf-net/protobuf-netprotobuf-netprotobuf-net is a contract based serializer for .NET code, that happens to write data in the “protocol buffers” serialization format engi...转载 2019-10-31 09:59:08 · 661 阅读 · 0 评论 -
Visual Studio远程调试
当我们用VS开发的软件在一台没有VS开发环境的电脑上运行出错,我们想进行调试,但是却不想在软件出问题的电脑上安装开发环境,这时候就需要VS提供的远程调试功能VS远程调试操作步骤1. 复制Remote Debugger到要调试的PC上2. 运行msvsmon.exe3. 在VS中点击调试=》附加到进程4. 选择检测到的目标PC5. 选择你要调试的软件进程6. 开始调试1. 复制Remote ...原创 2019-10-29 14:31:04 · 740 阅读 · 0 评论 -
C# 读写ini配置文件
INI 配置文件如下:先读取,再修改,再读取using System;using System.Runtime.InteropServices;using System.Text;namespace ConsoleApp4{ class Program { static void Main(string[] args) { ...原创 2019-05-29 16:07:20 · 5573 阅读 · 0 评论 -
用文件持久化数据
https://github.com/MarcosMeli/FileHelpershttps://www.filehelpers.net/FileHelpers是一个免费且易于使用的.NET库,用于从文件,字符串或流中的固定长度或分隔记录中导入或导出数据。您可以通过简单地描述映射到每个记录的类,然后将您的文件作为强类型.NET数组读取或写入来强类型化您的平面文件(固定或分隔)。该库还支...原创 2019-05-21 13:41:56 · 450 阅读 · 0 评论 -
C# 代码编辑器实现篇-智能提示和代码折叠
实现参见:https://github.com/lukebuehler/NRefactory-Completion-Sample智能提示:关键代码片段 //editor初始化 editor.Completion=new ICSharpCode.CodeCompletion.CSharpCompletion(GetRelativeAssemblies()); //需要支持提示的DLL...原创 2019-05-14 14:49:37 · 8005 阅读 · 6 评论 -
C# 代码编辑器实现篇-语法高亮
创建 C# 编辑器实现效果实现步骤本片介绍基于 AvalonEdit 实现一个支持语法高亮的 C# 编辑器实现效果语法高亮点击编译实现步骤在VS中创建窗体应用程序。通过 Nuget 引用 AvalonEdit。在窗体中引入控件 ElementHost。用来承载 AvalonEdit 中的 WPF 控件 TextEditor。实例化并配置 TextEditor。将其放入 El...原创 2019-05-14 14:07:06 · 7558 阅读 · 4 评论 -
C# 索引器
介绍原创 2019-02-22 13:58:34 · 159 阅读 · 0 评论 -
C# 中的 Action, Func, EventHandler 和 EventHandler<TEventArgs>
C# 中常用内置委托 Action, Func, EventHandler 和 EventHandler&lt;TEventArgs&gt; 介绍Action Delegate封装一个没有返回值的方法public delegate void Action();样例 public static void Main() { Action showMeth...原创 2019-02-27 18:20:31 · 4006 阅读 · 1 评论 -
C# Conditional 特性
Conditional 特性简介Conditional 特性允许我们包括或排斥特定方法的所有调用。为方法声明应用 Conditional 特性并把编译符作为参数来使用。如果定义了编译符号,那么编译器会包含所有调用这个方法的代码,这和普通方法没有区别。如果没有定义编译符号,那么编译器会忽略代码中这个方法的所有调用。Conditional 代码示例以下示例定义了一个 SayHello...原创 2019-02-25 10:13:02 · 1124 阅读 · 0 评论 -
C# 泛型中协变和逆变
协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。 泛型类型参数支持协变和逆变,可在分配和使用泛型类型方面提供更大的灵活性。协变 convariance样例01//基类class Animal{ public int Legs=4;}//派生类class Dog:...原创 2019-03-06 15:31:55 · 507 阅读 · 0 评论 -
C# AOP之类方法拦截
使用 Castle.Core 实现类方法拦截新建控制台应用程序通过nuget添加对Castle.Core的引用创建类 Dogusing System;namespace ConsoleApp1{ public class Dog { public virtual void Bark() { Console.W...原创 2019-03-27 21:00:38 · 1999 阅读 · 0 评论 -
C# 依赖注入 Castle.Windsor
依赖注入工具 Castle.Windsor 的简单应用Castle Windsor 是适用于.NET 的成熟的 IOC 容器样例01创建接口 IDependency1namespace ConsoleApp2{ public interface IDependency1 { object SomeObject { get; set; } }}...原创 2019-03-27 21:40:22 · 3178 阅读 · 0 评论 -
C# 脚本化实现方式探究
文章目录C# 脚本化使用 CodeDomRoslynMicrosoft Roslyn vs. CodeDom第三方工具库实现方式样例展示C# 脚本化.NET 编译平台介绍:https://docs.microsoft.com/zh-cn/dotnet/csharp/roslyn-sdk/使用 CodeDomCodeDOM 提供表示多种常见源代码元素的类型。 可以设计一个程序,它使用 Co...原创 2019-04-30 09:40:49 · 3357 阅读 · 0 评论 -
关于C#脚本的进一步探究
文章目录问题测试准备测试结论关于C#脚本的进一步探究问题是否可以通过脚本访问和修改类在运行时的变量?测试准备新建类库,创建 DataCenter.cs。用于测试脚本在运行时是否能获取和修改该类中的字段namespace ClassLibrary1{ public class DataCenter { private static string tim...原创 2019-04-30 10:36:08 · 326 阅读 · 0 评论 -
C# 代码编辑器实现-概述
C# 代码编辑器实现主要功能:语法高亮智能提示实现Demo:所使用第三方库:http://avalonedit.net/documentation/https://github.com/icsharpcode/AvalonEdithttps://github.com/icsharpcode/NRefactory实现细节:后续完善...原创 2019-04-30 11:19:15 · 4495 阅读 · 0 评论 -
C# 实现 ListView 无闪烁更新大批量记录
本文主要介绍 ListView 在实际应用中的两个问题。问题一:如何在刷新时避免界面闪烁?问题二:如何支持大量数据实时加载?ListView 界面闪烁界面闪烁可以通过自定义控件避免。实现如下 class NoFlashListView : ListView { public NoFlashListView() { ...原创 2019-02-15 15:15:14 · 4757 阅读 · 1 评论