少有人走的路

勇哥的工业自动化技术网站

本站视觉相关教程整理贴子,持续更新

2020年勇哥的机器视觉实验项目清单(大纲)

勇哥的免费视频教程清单

勇哥在B站发布的视频清单

在 Visual Studio 中使用调试器管理异常

log4net教程(一)基本应用

勇哥注:

log4net通过配置文件,可以有自己的缓存机制,并且可以设置成支持多线程输出。

另外还有日志级别和日志轮换功能。

输出媒介可以指定文件、数据库等。文件类型可以为ini, log等。

C# 含有PropertyGrid控件的对话框,如果操作选择下拉框,则此属性窗口再也关闭不了

C# 的 PropertyGrid是不是用得很爽。但是有一个缺陷一直让勇哥很不爽。当选择项是一个枚举或者List<string>的时候,用户可以点击下拉框进行选择。但是,如果使用这个下拉框,会有很大概率关闭不了这个属性窗体。即你按此窗体的关闭按钮,窗体也无法关闭。整个程序都被卡住了。只能用系统的任务管理器把程序强制关闭了。这种bug只会在推出下拉框的时候出现。怎么看都像是此控件固有的bug。百度翻过了,没有问到这种问题。不知道哪位大侠遇到过,麻烦告诉勇哥解决办法。临时解决办

Task.Factory.StartNew为啥同一次添加10几个线程,超过8个后面添加的线程变开始变慢


勇哥描述一下:

如下面代码,当循环Task.Factory.StartNew到第9个的时候,会发现要隔约1秒才可以添加第9个,后面的第10,11,12,13,14 都要间格较长时间。

如果你把下面代码中的while死循环去掉,则15个线程瞬间添加完成。

这是什么原因呢?

 for (int i = 0; i < 15; i++)
            {
                var t1 = Task.Factory.StartNew(fun);
                taskList.Add(t1);
            }
            
 
        private void fun()
        {
            OutMsg($"id={Thread.CurrentThread.ManagedThreadId}, 启动时间:{DateTime.Now.ToString("hh:mm:ss:ms")}\n");
            Stopwatch sw1 = new Stopwatch();
            sw1.Start();
            while (true)
            {
               
                Thread.Sleep(5);
                if (sw1.ElapsedMilliseconds > 4000)
                {
                    sw1.Stop();
                    OutMsg($"id={Thread.CurrentThread.ManagedThreadId}, 退出时间:{DateTime.Now.ToString("hh:mm:ss:ms")}\n");
                    break;
                }
            }
        }

VS团队资源管理器无法同步,错误为:无法拉取,因为本地和远程分支已更改


勇哥今天用vs团队资源管理器“同步”时出现一个不一样的错误。


错误如下:


image.png


vs的输出窗口报告的完整信息如下:

勇哥的C#版继承Treeview的带按钮的树形控件(带源码)

勇哥注:

此控件是继承TreeView控件重写的用户组件,主要特点是可以在节点文本右边添加按钮。

按钮本身就是一个Button类,可以设置按钮的显示相关的属性,以及事件等。

勇哥谈谈反射的优化技术

这篇文章是关于.Net的反射优化(有效率地使用反射)的技术。


文中有翻译不准确、难以理解的内容可在评论出指点或咨询。


概述

反射(Reflection)是一种非常强大的.Net平台的特性。System.Reflection命名空间下提供了一套丰富的加载和调用程序集和对象的接口,除此之外它还提供了 了运行时动态地检索元数据信息的方法,比如获取属性、字段信息,特性信息等。


使用反射确实可以使开发人员的生活变得轻松,但是应该尽可能少地使用它,换句话说,只在必需的情况下使用它。它在很大程度上影响了程序的性能。以下是几种提升反射效率的方法。

C# 怎么把object转为Tuple类型? 强制类型转换和as的区别?

.NET程序性能的基本要领

本文提供了一些性能优化的建议,这些经验来自于使用托管代码重写C# 和 VB编译器,并以编写C# 编译器中的一些真实场景作为例子来展示这些优化经验。.NET 平台开发应用程序具有极高的生产力。.NET 平台上强大安全的编程语言以及丰富的类库,使得开发应用变得卓有成效。但是能力越大责任越大。我们应该使用.NET框架的强大能力,但同时如果我们需要处理大量的数据比如文件或者数据库也需要准备对我们的代码进行调优。为什么来自新的编译器的性能优化经验也适用于您的应用程序微软使用托管代码重写了C#和Visual

C#的序列化与反序列化并不能对所有数据结构都可以保存读取

勇哥注:C#序列化与反序列化是大家用得非常多的功能。它可以保存C#中的对象,并且可以读回来。但是请注意如果对象中有下面的一些数据结构,它是无法保存或者读取的。(1)接口例如下面的接口ICard, 此时保存是可以的,只是读取时直接报错。public Dictionary<string, ICard> _CardObjectList = new Dictionary<string, ICard>();(2)字典Dictionary 视其key或者value
<< < 1 2 3 4 5 6 7 8 9 10 > >>
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864