
c#开发
文章平均质量分 64
@David Liu
别在树下徘徊,别在雨中沉思,别在黑暗中落泪。
展开
-
C#性能优化
1. C#语言方面1.1 垃圾回收垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。1.1.1 避免不必要的对象创建由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。1.1.1.1 避免循环创建对象 ★如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。高效的做法是将对象提到循环外面创建。1.1.1.2 在需要逻辑分支中创建对象如果对象只在某些逻辑分...转载 2021-04-28 22:54:16 · 1196 阅读 · 0 评论 -
C#线程池使用全网知识点汇总
在C#编程语言中,使用线程池可以并行地处理工作,当强制线程和更新进度条时,会使用内建架构的ThreadPool类,为批处理使用多核结构。在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.需要处理的任务的数量大线程池(ThreadPool)使用起来很简单,但它有一些限制:1. 线程池中所有线程都是后台线程,如果进程的所有前台线程都结束了,所有的后台线程就会停止。不能把入池的线程改为前台线 程。2. 不能给入池的线程设置优先级或名称。3. 对于COM对象...原创 2021-04-21 22:11:02 · 450 阅读 · 0 评论 -
C#如何安全地从后台更新UI
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后从后台线程更新按钮上的文本为“关闭”,初学者往往会想当然地这么写: void UpdateText() { button.Text="关闭"; }这样的写法运行程序之后,可能会触发异常,异常信息大致是“不能从不是创建该控件的线程调用它”。注意这里是“可能”,并不一定会触发该种异常。造成这种异常的原因...原创 2020-11-29 19:43:15 · 1253 阅读 · 0 评论 -
VS2010/2015查看DLL导出函数的方法
在window下查看动态库的导出函数可以用vs自带的Dependenc工具;对于VC6.0,VC所带的Depends软件,在VC6安装目录下的tools文件夹里面,可以直接运行。vs2015dumpbin.exe路径C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\binvcvarsall.bat路径C:\Program Files (x86)\Microsoft Visual Studio 14.0\VCVS..转载 2020-08-01 03:05:50 · 1872 阅读 · 0 评论 -
wpf绘制圆形图案
<Window x:Class="DrawArrow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="550" Width="625"> <Grid>...原创 2020-07-29 21:28:56 · 7117 阅读 · 0 评论 -
wpf绘制圆形图案
/// <summary> /// 作出圆圈 /// </summary> private void DrawCircle(double x, double y, int r, Brush PenColor) { Path x_Arrow = new Path();//x轴箭头 x_Arrow.Fill = PenColor; ...原创 2021-06-29 22:01:25 · 1827 阅读 · 0 评论 -
WPF ScrollViewer控件添加自定义滚动条
<ScrollViewer Name="sv1" VerticalScrollBarVisibility="Hidden" Margin="0" Width="auto" Grid.Row="1"> <DockPanel Name="FlowPanel" MinWidth="20" Background="#FFE1F3D8" ></DockPanel></ScrollViewer> <ScrollViewer .原创 2020-07-29 21:06:27 · 555 阅读 · 0 评论 -
wpf 控件空白区域不响应事件
因为部分控件默认是Background="{x:Null}",无法获取到鼠标点击的EventArgs(就相当于空的面板)。 设置成Background="Transparent" 透明色就可以实现了。判断当前鼠标位置是否在DataGrid当前行 public static bool isItemSelected = false; private void xStepDataGrid_PreviewMouseLeftButtonDown(object sender.原创 2020-07-29 20:54:38 · 1480 阅读 · 0 评论 -
C# 调用halcon进行图像匹配算分
//// File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0//using HalconDotNet;namespace VsHelper{ void Match() { HTuple Width, Height, WindowHandle3,...原创 2019-12-11 23:42:47 · 2500 阅读 · 0 评论 -
RC4加密算法原理与C#实现
RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特), 在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见 RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,如今也没有找到对 于128bit密钥长度的RC4加密算法的有效攻击方法。 ...原创 2019-12-05 22:16:29 · 1879 阅读 · 0 评论 -
C#实现所有CRC8,CRC16,CRC32校验算法
说明:CRC8与串口大傻计算结果不一致CRC16与串口大傻计算结果一致CRC32与串口大傻计算结果一致,但4.5版本大傻计算结果最高字节始终为0同时对16进制字符串11 22 33 进行校验计算结果如下本算法结果如下:using System;using System.Collections.Generic;using System.Text;names...原创 2019-12-01 15:50:23 · 5285 阅读 · 0 评论 -
C#实现QQ2019自动登录
调用方式: private void btn_AutoLoginQQ_Click(object sender, EventArgs e) { VsHelper.QQ2019AutoLogin.AutoLoginQQ.AutoLogin("账号", "密码"); }实现原理打开QQ找到QQ窗口句柄鼠标选中账...原创 2019-11-30 23:34:09 · 1029 阅读 · 0 评论 -
DButil调用
#region DButil public static DBUtil.IDbAccess Db = null;// DBUtil.IDBFactory.CreateIDB(@"Data Source=" + Environment.CurrentDirectory + "\\DB\\Data.db;Password=...;", "SQLITE"); ...原创 2019-11-27 20:29:19 · 363 阅读 · 0 评论 -
SMTP邮件服务器要求安全连接或客户端未通过身份验证的各个解决方案
SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#) 最近在做邮件发送接口 把遇到的问题和解决方法告诉大家 希望对了解邮件的人有所帮助 原程序部分代码如下 //设置邮件信息 发件人地址、收件人地址、标题、主题 MailMessage mail = new MailMessage("xxxxxxx@sina.com", "zzzzzzz@sina....原创 2019-11-25 23:58:30 · 31355 阅读 · 0 评论 -
C#软件调用Dotfuscator进行混淆加密
直接配置项目后期生成事件即可对软件进行混淆加密。配置生成后期事件:if $(ConfigurationName)==Release "C:\Program Files (x86)\Microsoft Visual Studio 11.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition\dot...原创 2019-11-25 22:04:23 · 782 阅读 · 0 评论 -
C#操作Windows控制面板
运行输入(大小写不敏感)control system打开系统信息control desktop打开个性化设置controlcolor打开个性化设置下的颜色和外观control userpasswords用户账户control netconnections网络连接(跟ncap.cpl一样)control folders文件夹选项control mouse...原创 2019-11-24 13:46:05 · 1443 阅读 · 0 评论 -
C#关联文件类型到自己的程序
using System;using System.Collections.Generic;using System.Windows.Forms;using Microsoft.Win32;namespace AppC{ static class Program { /// <summary> /// 应用程序的主入口点。 ...原创 2019-11-17 17:14:48 · 1278 阅读 · 0 评论 -
windows系统壁纸和休眠模式配置
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;namespace Start10{ public class SystemHelper { [StructLay...原创 2019-11-17 16:14:06 · 477 阅读 · 0 评论 -
Everything.dll动态库调用,兼容32位和64位
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;namespace Start10{ public class Everything { /// <sum...原创 2019-11-17 16:07:12 · 2128 阅读 · 4 评论 -
C#检查文件关联并创建关联exe
给右键添加菜单项,微软首先推荐静态方式,即给文件类型或者系统子健添加一个conmmand命令如果要添加一个右键菜单项,首先考虑添加范围,1)某一系统子健(系统所有文件、系统所有目录、系统空白右键、shift右键等);2)某一文件类型添加系统子健添加常用的子健:HKEY_CLASSES_ROOT*:系统所有文件,右键系统任一文件都会添加右键菜单HKEY_CLASSES_RO...转载 2019-11-17 10:05:02 · 481 阅读 · 0 评论 -
Excel操作类(Npoi)
读写excel 向excel追加数据 指定追加数据颜色using System;using System.Data;using System.IO;using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.POIFS....原创 2019-10-19 16:04:40 · 430 阅读 · 0 评论 -
C#利用反射机制创建对象
“反射”其实就是利用程序集的元数据信息。 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间。1、假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型):Assembly assembly = Assembly.LoadFile("程序集路径,不能是相对路径"); // 加载程序集(EXE 或 DLL)dynamicobj = assemb...转载 2019-09-25 14:47:30 · 4794 阅读 · 0 评论 -
NPOI Excel 单元格背景颜色对照表
NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillPattern 为单元格背景色的填充样式。NPOI Excel 单元格背景颜色设置方法以及颜色对照表: 1 2 3 4 5 6 ...原创 2019-09-27 19:13:39 · 2124 阅读 · 0 评论 -
C#各时区时间互相转换
DateTime utcTime0 = DateTime.UtcNow; DateTime utcTime1 = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, TimeZoneInfo.Local); DateTime dateTime = DateTime.UtcNow; ...原创 2019-10-09 16:57:39 · 7057 阅读 · 0 评论 -
C#播放背景音乐常用的四种方式
1.播放系统事件声音 2.使用System.Media.SoundPlayer播放wav 3.使用MCI Command String多媒体设备程序接口播放mp3,avi等 4.使用axWindowsMediaPlayer的COM组件来播放 1.播放系统事件声音 System.Media.SystemSounds.Asterisk.Play();...转载 2019-06-14 23:46:10 · 7905 阅读 · 0 评论 -
C#文件的强制删除与进程保护
private void btn_CloseApp_Click(object sender, EventArgs e) { string filepath = RelaseAndGetHandleExePath(); CloseApp(filepath, tb_FileName.Text); }...原创 2019-03-17 14:08:08 · 3245 阅读 · 2 评论 -
Btool使用指南与开发板编程说明
低功耗蓝牙基本原理简介本次讲座介绍 SimpleLink™ CC26x2 和 CC13x2 软件开发套件 (SDK) 的 低功耗Bluetooth®器件。本次实验中的 4 个任务预计将在 2 小时内完成。完成 这些任务需具备中级 C 语言编程知识 以及一定的嵌入式软件开发经验。文末附开发板驱动及开发板上位机程序下载链接本次实验课程将使用 SimpleLink CC26...原创 2019-09-21 20:15:47 · 1804 阅读 · 0 评论 -
C#提高编程能力的50个要点总结
本文总结了C#提高编程能力的50个要点。分享给大家供大家参考,具体如下:1.总是用属性 (Property) 来代替可访问的数据成员2.在 readonly 和 const 之间,优先使用 readonly3.在 as 和 强制类型转换之间,优先使用 as 操作符4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if5.总是为自定义类重载 T...转载 2019-09-15 23:44:45 · 783 阅读 · 0 评论 -
多线程同步与线程池
前台线程和后台线程C#中的线程分为前台线程和后台线程,线程创建时不做设置默认是前台线程。即线程属性IsBackground=false。Thread.IsBackground = false;//false:设置为前台线程,系统默认为前台线程。区别以及如何使用:这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运...原创 2019-05-12 23:42:20 · 469 阅读 · 0 评论 -
网络传输的两种方式——同步传输和异步传输的区别
在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。1. 异步传输(Asynchronous Transmission):异步传输...转载 2019-05-06 22:58:03 · 91214 阅读 · 10 评论 -
C# 正则表达式
正则表达式是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。定义正则表达式下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。字符转义 字符类 定位点 分组构造 限定符 反向引用构造 备用构造 替换 杂项构造字符转义正则表达式中的反斜杠字符(\)指示其后跟的字符是特殊字符,或应按原义解释该...转载 2019-04-14 12:40:24 · 320 阅读 · 0 评论 -
C# using的使用-资源回收
using (Line line = new Line()) { // 设置线条长度 line.setLength(6.0); Console.WriteLine("线条的长度: {0}", line.getLength()); ...原创 2019-04-14 12:17:18 · 1116 阅读 · 0 评论 -
C#构造函数与析构函数
一、C#析构函数1. 析构函数的定义与注意的问题析构函数用于释放被占用的系统资源。析构函数的名字由符号“~”加类名组成。使用析构函数时,应该注意下面的问题:?只能在类中使用析构函数,不能在结构中使用析构函数。?一个类只能有一个析构函数。?不能继承或重载析构函数。?析构函数只能被自动调用。?析构函数没有任何修饰符、没有任何参数、也不返回任何值。2. 调用析构函...转载 2019-04-14 11:41:23 · 448 阅读 · 0 评论 -
c# 时间字符串格式化
void DateTimeStr() { DateTime dt = new DateTime(2017, 4, 1, 13, 16, 32, 108); string.Format("{0:y yy yyy yyyy}", dt); //年份:17 17 2017 2017 string.F...原创 2019-04-14 11:31:21 · 1486 阅读 · 0 评论 -
C#调用C代码DLL
首先我们新建一个C语言的WIN32项目选择项目类型为DLL库在新建的项目中我们添加Ccode.h,Ccode.cpp两个文件Code.hextern "C" __declspec(dllexport) int Minus(int a, int b);extern "C" __declspec(dllexport) int Add(int a, int b);Cc...原创 2019-01-22 23:05:21 · 3600 阅读 · 0 评论 -
C#访问Http及https操作
public class ApiResult { public int statusCode; public string result; public string errcode; public string memo; } private ApiR...原创 2019-01-05 16:25:43 · 6143 阅读 · 2 评论 -
C#使用NPOI 操作excel
DataTable导入导出请自行添加以下动态库引用NPOI.dllNPOI.OOXML.dllNPOI.OpenXml4Net.dllNPOI.OpenXmlFormats.dllusing System;using System.Data;using System.IO;using NPOI.HSSF.UserModel;using NPOI.HSSF.Util...原创 2019-01-05 16:21:00 · 790 阅读 · 0 评论 -
C#多线程同步机制
1. 监视器(Monitor)和互斥锁(lock)2. 读写锁(ReadWriteLock)3. 系统内核对象互斥对象(Mutex)1) 互斥(Mutex), 信号量(Semaphore), 事件(AutoResetEvent/ManualResetEvent)2) 线程池自由锁(InterLocked)对一个32位的整型数进行递增和递减操作来实现锁,有人会问为什么...原创 2019-01-05 11:54:04 · 1725 阅读 · 0 评论 -
安捷伦34970、53220、特尔斯特FSH4、普源DSA800常用采集测量仪器介绍与控制
安捷伦34970-数据采集 / 数据记录仪开关单元安捷伦Agilent34970A是一种高性能、低价位的数据采集和开关主机,十分适于数据记录、数据采集和一般的开关与控制应用。 class Agilent34970 { static SerialPort sp = new SerialPort(); public bool Initializ...原创 2019-01-05 11:10:48 · 2531 阅读 · 1 评论 -
使用VS2012进行单元测试
一.打开VS2012的创建单元测试功能1.工具--自定义2.选择 上下文菜单--编辑器上下文菜单|代码窗口3.找到“创建单元测试”这个菜单了,将它移到运行测试菜单上面4.关闭VS并重启二、打开需要进行单元测试的项目/工程1.在解决方案上右击 添加 单元测试项目2.在需要单元测试的函数内右击,选择 创建单元测试3.选择需要创建单元测试的函数和输出到...原创 2019-06-02 21:46:40 · 1556 阅读 · 0 评论