C#技巧
文章平均质量分 56
冀石程序猿
从事c#开发
展开
-
C# 解决动态调用WebService内存泄露的问题
目录一、问题原因二、问题处理一、问题原因最近项目中用到了动态调用WebService的代码,网上给出的代码WebServiceHelper的代码,如下,此代码存在内存泄露,执行一次,程序会涨大概0.2MB的内存,最后导致程序出现OutOfMemory的错误,为什么会出现内存泄露呢?原因在于CompilerResults类动态编译一次就会增加内存,只有程序退出时才能释放,因此,只要减少动态编译的次数即可解决内存一直增长的问题。#region InvokeWebService原创 2022-03-30 11:54:52 · 1087 阅读 · 2 评论 -
C# 异步操作Task类使用(二)
一、多线程同步何为线程同步,其实就是数据串行操作,当前当前的资源在没有操作完毕之前,不允许其他的线程对同一资源进行操作。即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,互斥量就是其中一种。在C#中使用互斥量 Mutex即可进行线程同步。using System; using System.Threading;class MutexSample{原创 2022-02-07 21:57:28 · 614 阅读 · 1 评论 -
C# 异步操作Task类使用(一)
目录一、Task类介绍1、Task创建2、Task异步方法运行3、Task异步方法释放二、Task更新UI线程1、在更新UI线程的控件时需要使用异步委托进行操做2、关闭线程错误异常提示在C/S编程中Task和Thread是异步操作必不可少的类,作用:为了提高用户操作程序的体验,防止UI线程的卡顿,其实多线程就相当于2个人同时干活。例如:我们在访问局域网内WebService服务时,如果网络通讯不通或不顺畅时,在不使用线程或异步方法更新就会造成主线程卡顿,在网络操作超时之.原创 2022-01-27 23:16:39 · 3449 阅读 · 1 评论 -
C# 使用串口分析SAM协议,读取身份证信息
最近做了个项目,使用Linux Arm主板终端机器,这个终端的一项功能是使用身份证读卡器读取人员的身份证号,初次解除Linux系统,经过原创 2022-01-24 20:07:27 · 1991 阅读 · 1 评论 -
C# 调用USB摄像头
C#调用USB摄像头使用AForge类库进行开发1、AForge安装原创 2022-01-15 23:13:27 · 980 阅读 · 1 评论 -
C# 在Windows系统下使用蓝牙进行数据通讯
1、蓝牙介绍蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接。蓝牙作为一种小范围无线连接技术,能在设备间实现方便快捷、灵活安全、低成本、低功耗的数据通信和语音通信,因此它是实现无线个域网通信的主流技术之一。与其他网络相连接可以带来更广泛的应用。是一种尖端的开放式无线通信,能够让各种数码设备无线沟通,是无线网络传输技术的一种,原本用来取代红外线通信。2、蓝牙在项目中应用最近一个项目中要求采集设原创 2022-01-11 13:07:19 · 4494 阅读 · 3 评论 -
C# 使用DirectX.DirectSound播放语音
最近在做项目时,需要进行音频文件的即时播放,并且要求同时播放多条语音,之前C#程序中语音播放一直使用System.Media类库的SoundPlayer类进行播放,但是这个播放类有个弊端,就是在播放时不能同时播放2条语音,经过查找资料DirectX.DirectSound可同时播放2条语音。DirectX.DirectSound的特点1、可同时播放多条语音2、可分左右声道进行播放3、可随时释放正在播放的语音此组件处理流程:1、创建播放线程 public void原创 2022-01-08 22:10:00 · 2426 阅读 · 1 评论 -
C# 提示:无法加载 DLL“XXX.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
今天再调试程序时发现程序再笔记本上运行正常,然而拷贝到客户主机上之后出现了(System.DllNotFoundException: 无法加载 DLL“msc.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。)的问题,经过再三调试,1、确认CPU平台为x86,正常2、dll的路径,正常经过再三的排除,发现是msc.dll的一个依赖库缺少了。通过以下的方法进行C++依赖库查看:1、打开vs目录下的控制台命令行2、输入在命令行中输入命令:dump.原创 2022-01-07 16:41:37 · 18777 阅读 · 3 评论 -
C# SQLite库使用
SQLite,是一款轻型的数据库,是遵守的ACID关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标嵌入式是的,而且已经在很多中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等...原创 2022-01-05 21:41:24 · 1934 阅读 · 3 评论 -
C#+mono 在Linux Arm下访问CAN设备
mono可以使C#程序运行在Linux下,使用C#调用Linux下CAN设备也是可行的,C#可以跨平台调用so库1、使用C封装CAN通讯并编译#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <net/if.h>#include <sys/ioctl.h>#include <sys/socke原创 2021-12-28 20:43:31 · 1310 阅读 · 2 评论 -
C# FastReport.Net使用
对于管理类的程序在从数据库获取到数据集之后,可能就需要进行报告单的打印,C#中FastReport.Net类库封装了报告单的设计与打印,下面介绍FastReport.Net使用原创 2022-01-03 19:36:38 · 6381 阅读 · 3 评论 -
C# 正则表达式判断
在编写C#程序时,对格式和类型进行转换时就需要使用正则表达式判断,转换前的格式是否满足转换的的需要。正则表达式用的最多的判断:1、IsNumber是否数字,通过正则表达式来验证是否为数字 public static bool IsNumber(string strNumber) { Regex objNotNumberPattern = new Regex("[^0-9.-]"); Regex objTwoDotPa原创 2022-01-02 23:36:20 · 1974 阅读 · 1 评论 -
C# Log4Net 日志库应用
开发一款应用程序,必不可少的就需要进行日志记录,在C#下使用Log4Net进行日志记录Log4Net使用步骤:1、NuGet程序包下载,首先右击工程,单击“管理NuGet程序包”,在收缩框输入“log4net”安装相应类库。2、在工程的Assembly Info.cs 中增加 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] ,这行作用为了封装类库原创 2022-01-01 22:44:27 · 1052 阅读 · 0 评论 -
C# 串口SerialPort控件
串口对于工控领域应用较为广泛原创 2021-12-31 22:57:50 · 4864 阅读 · 0 评论 -
C# MQTT 应用介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 特点:1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序的耦合2、对负载内容屏蔽的消息传输3、使用TCP/IP提供网络连接MQTT分为服务端和客户端,服务端Broker,所有设备原创 2021-12-30 23:07:01 · 9422 阅读 · 1 评论 -
C# AppSettings使用
C# AppConfig 读写原创 2021-12-29 13:11:17 · 5122 阅读 · 0 评论