C#传递函数指针到C++

简介 在编码的时候难免会遇到不同编程语言之间的接口调用,其中最通用的就是C的动态链接库,几乎所有语言都可以调用C的接口函数。那么这种关系能否反过来呢?用C调用其它的函数接口,当然也是可以的,只需要将函数指针作为参数传递进去就可以了。 ...

2020年7月17日 · 2 分钟 · 790 字

Newtonsoft.NET 基本使用

简介 JSON是一种常用的轻量级数据交换格式。与XML相比,JSON无论是体积还是可读性都更好,所以在网络数据传输和应用程序中被广泛的应用。 那么,.NET平台使用最广泛的JSON库是什么呢?自然要数Newtonsoft.NET了,打开nuget包管理器第一个就是,在所有包下载量排行中排名第一。使用简单,性能可靠,文档也很齐全。 使用 使用JSON最常用的就是对象的序列化和反序列化。 先来看最基本的使用 csharp ▼ 1 2 3 4 5 6 7 // 先定义一个类 public class TestJsonDeseClass { public Guid MessageGuid { get; set; } public string Message { get; set; } } csharp ▼ 1 2 3 4 5 6 7 8 TestJsonDeseClass test = new TestJsonDeseClass() { MessageGuid = Guid.NewGuid(), Message = "Test Message" }; string json = JsonConvert.SerializeObject(test); TestJsonDeseClass des = JsonConvert.DeserializeObject<TestJsonDeseClass>(json); 只需要将类的成员属性设置为get和set就可以了,反序列化的时候,Json.NET会自动根据成员的名字为对象的成员赋值。 ...

2020年2月22日 · 3 分钟 · 1300 字

使用 Named Pipe 进行进程间通讯

这段时间公司的一个项目打算使用Named Pipe进行进程间的通讯,刚好花了点时间了解了一下,这里做一下笔记。 Named Pipe(命名管道),顾名思义,是通过在两个进程间搭建一个管道来进行通讯,这种方式的好处在于两者可以进行全双工的通讯,服务端也可以通过管道向客户端发送消息,对于两个进程之间的通讯来说再合适不过了,使用起来也相对比较灵活。 ...

2019年11月15日 · 3 分钟 · 1303 字

Hprose C# 初探

简介 Hprose(High Performance Remote Object Service Engine)是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。 也是一个跨语言的RPC框架,但由于库的质量参差不齐,一些语言的库并不完善。这里以C#为例来实现一个简单的服务端和客户端程序。 ...

2019年8月19日 · 2 分钟 · 818 字

Thrift C# 初探

简介 Thrift是由Facebook为“大规模跨语言服务开发”而开发的一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。目前被作为一个RPC框架使用。 下载 使用之前需要先下载Thrift的源代码和Thrift编译器。 下载源代码后解压,进入到thrift-0.12.0\lib\csharp\src目录下,打开Thrift.sln,根据需要编译相应的库,这里选择Thrift.45,即.NET 4.5可以使用的库,编译生成Thrift45.dll。 ...

2019年8月19日 · 3 分钟 · 1329 字

gRPC C# 初探

简介 gRPC是Google开源的一个现代化、高性能的RPC框架,基于HTTP/2标准设计,同时提供多个语言版本,并支持跨语言调用,可以在任何环境中运行。 创建项目 新建解决方案,包含3个项目 gRpcSample 类库,gRPC生成的接口,Server接口、Client接口等 server 控制台程序,服务端 client 控制台程序,客户端 分别给3个项目安装Nuget程序包Grpc并安装所需依赖,然后为gRpcSample项目安装Grpc.Tools和Google.ProtoBuf程序包。 ...

2019年8月18日 · 3 分钟 · 1374 字

WPF如何处理Windows消息

发送消息到指定窗口 发送消息相对来说比较简单,这里先讲,这里需要用到两个Windows的API csharp ▼ 1 2 3 4 5 6 7 8 9 10 11 12 // 查找指定窗口 [DllImport("User32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //消息发送API [DllImport("User32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto)] public static extern int SendMessage( IntPtr hWnd, // 信息发往的窗口的句柄 int Msg, // 消息ID IntPtr wParam, // 参数1 IntPtr lParam // 参数2 ); FindWindow就是根据窗口的名字去找到相应的窗口句柄,SendMessage就是发送消息到指定窗口了,写过MFC的应该不陌生 ...

2019年5月26日 · 2 分钟 · 753 字