勇哥描述一下:
如下面代码,当循环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的输出窗口报告的完整信息如下:
三岁那年,我紧握着手中的棒棒糖,坚定的认为那最重要
五岁那年,我花了整整一个下午逮住那只蜻蜓,那一刻,它好像是
最重要的
七岁那年,我看着同桌手中的奖状,带着羡慕和一点点嫉妒,觉得那也许是最重要的。
九岁那年,仰躺在树荫下,阳光斑驳的洒在脸上,一个悠闲的暑假于我而言是如此重要
十三岁那年,我意识到,重点高中的录取通知书对我的人生很重要
勇哥注:
所谓的基类控件,就是不从其它控件继承的,而是继承UserControl的控件。
控件外观如下:

勇哥注:
C# 在解决方案管理器中双击winform,打开设计器的等待时间超长。。。
有时候甚至要等十几分钟这么夸张。。。

另外,如果你使用vs2022打开相同的工程,发现打开winfom的速度就变得飞快了!
勇哥注:
这个问题勇哥在网上找了许久。
假设A、B单元格都是下拉DataGridViewComboBoxColumn。
我想A单元格选中一个内容,B单元格进行刷新列表。
让datagridview的DataGridviewComboBoxColumn即可以下拉,还可以输入内容
这个需求是有必要的。
勇哥参考了一些网上的资料,证明winform还是可以实现此功能的。
虽然操作上有点不太方便,比如输入内容后回车不能结束编辑,需要点内外的单元格结束编辑。
但是好歹是实现的要求,而且不用重写一些方法。
效果如下:

勇哥注:
去除List的重复元素的问题是比较常见的需求,C#有标准的做法,以后不要自己写了。
public class Student
{
public string Name { get; private set; }
public int Id { get; private set; }
public string Hobby { get; private set; }
public Student(string name, int id, string hobby)
{
this.Name = name;
this.Id = id;
this.Hobby = hobby;
}
/// <summary>
/// 方便输出,重写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format("{0}\t{1}\t{2}", this.Name, this.Id, this.Hobby);
}
}
public class Compare : IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
{
return x.Id == y.Id;//可以自定义去重规则,此处将Id相同的就作为重复记录,不管学生的爱好是什么
}
public int GetHashCode(Student obj)
{
return obj.Id.GetHashCode();
}
}Powered By Z-BlogPHP 1.7.3
Copyright www.skcircle.com Rights Reserved.