C#
海歌也疯狂
用努力获得。
QQ:1317248465,欢迎交流
展开
-
一种C#实现的函数互斥的方法
using System;using System.Runtime.CompilerServices; //引入该包/// <summary>///Test的摘要说明/// </summary>public class Test{ public Test() { } [MethodImpl(MethodImplOptions.Synchronized)] //这里指定下面的函数需要进行互斥,互斥的颗粒度是函数 public s...转载 2021-05-12 14:12:22 · 431 阅读 · 0 评论 -
C#的checksum计算公式
private Byte GetCheckSum(Byte[] bytes){ Byte checksum = 0x00; foreach (byte bt in bytes) { checksum ^= bt; } return checksum;}原创 2020-09-28 14:11:50 · 2137 阅读 · 0 评论 -
C#控件多个Button响应同一个事件
①首先定义多个Button的同一触发事件②编写触发事件函数private void BtnClick_GuDingGongLvModeChange(object sender, EventArgs e){ if (((Button)sender).Name == "Btn1GuDingGongLvPic") //根据名称来区分不同的按钮 { //Btn1GuDingGongLvPic按钮对应事件 } else if (((Button)sender).Name ==原创 2020-09-14 09:35:28 · 4585 阅读 · 2 评论 -
C#判断textbox中的数据是否16进制
public bool IsHexadecimal(string str){ const string PATTERN = @"[A-Fa-f0-9]+$"; return System.Text.RegularExpressions.Regex.IsMatch(str, PATTERN);}if (IsHexadecimal(WifiIDText.Text.ToString()) == false){ MessageBox.Show("Please enter th.原创 2020-08-12 13:57:54 · 904 阅读 · 0 评论 -
C#识别特定的串口号
private static string TWE_LITE_ID = "FTDIBUS\\VID_0403+PID_6001";//FTDIBUS\\VID_0403/// <summary> /// Get available ports /// </summary> private string getAvailablePorts() { string[] ss = MulGetHar.原创 2020-05-27 17:50:09 · 1185 阅读 · 0 评论 -
C#追加Log到TextBox(打印)
/// <summary>/// Output stauts log/// </summary>/// <param name="str"></param>private void OutStatusLog(string str){ LogText.AppendText(str); LogText.ScrollToCaret();}原创 2020-05-27 17:42:55 · 698 阅读 · 0 评论 -
Windows的.winmd文件解析
简介使用Microsoft接口定义语言(MIDL )创建的文件,包含元数据,它表示自定义的Windows运行时组件的API ,写的DLL文件格式,但并没有包含像传统的.DLL文件中的代码,它的格式是使用的.NET框架。要创建WINMD文件,请使用MIDLRT编译器。WINMD文件位于C:\ WINDOWS \ SYSTEM32 \ WinMetadata \ 。winmd文件可以让js、...转载 2019-12-02 11:16:54 · 5585 阅读 · 0 评论 -
C# NULL检查运算符(?.)
转载 2019-11-26 18:13:57 · 3078 阅读 · 0 评论 -
C#委托的简单使用
C#利用委托实现将类中数据传到APP,使用步骤如下:①在Class中声明一个委托,再创建一个事件//Define a delegatepublic delegate void Mydelegate(byte[] data = null);public event Mydelegate ReadValueChanged;//Define a delegatepublic dele...原创 2019-11-26 18:05:00 · 211 阅读 · 0 评论 -
C#对于字符串的容错处理
判断字符串是否为空if (LogFileSavePathText.Text.Trim() == String.Empty){ MessageBox.Show("Please select path which will be save sensor data!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Err...原创 2019-03-05 16:59:01 · 519 阅读 · 0 评论 -
C#中保留历史值和窗体间传值。
1. 保留历史操作值的位置2. 点击Settings.settings,编辑可以保存历史值的变量3. 右击Settings.settings,选择View Code,可以编辑对象的属性类型,如下图在默认的属性中是没有Double[],所以需要在View Code后手动地去修改。 4. 点击Settings.Designers.cs 初始化设定的变量5. 在F...原创 2018-07-27 13:55:00 · 737 阅读 · 0 评论 -
C#中Debug和Release模式的区别
在Debug模式下,如果在线程中,调用这个函数,可以省略 Thread.Sleep(1); ,这样也是可以切换到别的线程中去,但是如果在Release模式下,调用这个函数,如果没有Thread.Sleep(1); ,则无法切换到别的线程中去。...原创 2018-07-27 13:12:11 · 2537 阅读 · 0 评论 -
String、StringBuffer与StringBuilder之间区别
对于三者使用的总结: 1.如果要操作少量的数据用 = String 2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder 3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer...转载 2018-05-17 10:55:14 · 94 阅读 · 0 评论 -
C# 数据类型占用的字节数
bool -> System.Boolean (布尔型,其值为 true 或者 false)byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)char -> System.Char (字符型,占有两个...转载 2018-05-17 16:28:09 · 534 阅读 · 0 评论 -
C#调用C或C++编写的DLL库
1.编写DLL文件(1)新建DLL工程(2)选择空工程,类型为DLL(3)添加.c文件#include <stdio.h>struct struStudent{ int a; int b; int c;};extern "C" __declspec(dllexport) int add(struStudent strS...原创 2018-05-12 13:39:09 · 689 阅读 · 0 评论 -
C#互斥锁Mutex的应用
以下是通过C#编写的控制台程序,具体是在线程间调用互斥锁。 示例一 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//use the mutex and threadusing System....原创 2018-05-14 13:37:45 · 516 阅读 · 0 评论 -
C#获得当前线程的ID号
C# 获得当前 进程 或 线程的ID如果获得当前进程的Id用:Process[] processes = Process.GetProcesses(); foreach(Process process in processes) { if(process.ProcessName == "进程名" { MessageBox.Show(process...转载 2018-05-14 14:10:42 · 16454 阅读 · 0 评论 -
C#按特殊字符切断字符串
在一般的字符串中,有用“ ”“,”组成的,在一般情况下,需要进行单个提取,使用的Split()函数,实例如下。 //打开要读取的文件,获得文件路径 private void Script_Log_Select_Click(object sender, EventArgs e) { OpenFileDialog Openfi...原创 2018-05-14 15:30:08 · 1458 阅读 · 0 评论 -
C#16进制字符和16进制整数的转换
(1)获取TextBox中的内容转换为16进制数字 string strCanID = CanIDText.Text;uint a = Convert.ToUInt32(strCanID, 16); (2)将整数转换为16进制字符int uiBaseAddress = 0x22334455;uiBaseAddress.ToString(“X2”); 综合用...原创 2018-05-14 15:45:07 · 7109 阅读 · 0 评论 -
C#延时函数的使用
在线程中如果需要延时,尽量不要使用Sleep()函数,这样会导致时间片切到别的线程中。使用如下函数: //Delay function public static void Delay(int milliSecond) { int start = Environment.TickCount; while (Math.Abs(Envi...原创 2018-05-26 13:17:32 · 10761 阅读 · 0 评论 -
C#委托的使用
在线程中,常常需要使用委托去改变控件的状态,委托实际就是一个函数指针。C#使用委托的一般结构如下: //Fun函数代码 private void fun(string str) { Show(str); } //声明委托: public delegate...原创 2018-05-26 13:39:36 · 163 阅读 · 0 评论 -
C#16进制数组和string之间的相互转换
在C#中,常常需要16进制数组和string之间的相互转换,所以有以下两个函数,方便调用: //字符串转16进制字节组: public static byte[] strToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); //去...原创 2018-05-26 13:47:16 · 5717 阅读 · 0 评论 -
C#中byte数组之间的复制
可能在使用数组时,需要根据数组的指定位置后截取指定的长度: public Byte[] recvbuf = new Byte[64];byte[] ByteTemp = new byte[receiveLen];Buffer.BlockCopy(recvbuf, 0, ByteTemp, 0, receiveLen); VS中关于Buffer.BlockCopy的解释如下:...原创 2018-05-26 14:10:35 · 2298 阅读 · 0 评论 -
C#截取文件名的相关位置
class Program { static void Main(string[] args) { //获取当前运行程序的目录 string fileDir = Environment.CurrentDirectory; Console.WriteLine("当前程序目录:"+file...转载 2018-05-26 14:31:50 · 811 阅读 · 0 评论 -
VS2015中更改项目名称
修改工程的名称,最终的项目名称和生成文件都要变成更改后的,主要是通过以下几个步骤就能完成: 修改解决方案的名称。 修改解决项目名称。 修改项目的程序集名称和默认命名空间 替换整个项目或解决方案中的出现该名称的地方。 修改.sln文件中的出现的名称。 更该与.sln文件同一目录的文件夹的名称。 删除项目Debug或Release文件下的所有内容 重新编译整个解决方案 修改...转载 2018-06-04 15:16:32 · 14310 阅读 · 0 评论 -
C++与C#数据转换
Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char ...转载 2018-05-17 10:04:37 · 419 阅读 · 0 评论