功能介绍:
1. 窗口最小化到托盘及右键图标显示菜单;
2. D:\Picture\device2 D:\Picture\device1 D:\Record
路径下有数据更新以后将新增加的文件通过TCP/IP上传到云端;
3. 界面上可以显示数据收发的进度条;
注意:1. 收发用同一个客户端 2. LocalPort 收发端需要不一样
Just So So ...
功能介绍:
1. 窗口最小化到托盘及右键图标显示菜单;
2. D:\Picture\device2 D:\Picture\device1 D:\Record
路径下有数据更新以后将新增加的文件通过TCP/IP上传到云端;
3. 界面上可以显示数据收发的进度条;
注意:1. 收发用同一个客户端 2. LocalPort 收发端需要不一样
.NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6.
升级条件:
Windows 操作系统
.NET 6 SDK
Visual Studio 2022 17.0 或更高版本
在 .NET 框架中并没有线程安全的 ConcurrentHashSet
类,我想模仿 ConcurrentDictionary
来实现一个,目前写了一下桩代码。
Task.Factory.StartNew 和 Task.Run 都可以创建 Task:
Task.Factory.StartNew(() => { Console.WriteLine("Task.Factory.StartNew"); });
Task.Run(() => { Console.WriteLine("Task.Run"); });
那它们之间有什么区别呢?
用命令对象调用存储过程,就是定义存储过程的名称,给过程的每个参数添加参数定义。
下面的示例调用存储过程 GetBooksByPublisher,得到一家出版社的所有图书。这个存储过程接收一个参数。使用递归查询返回所请求的所有图书的记录: