c#生成唯一的ID

本文介绍了在高并发环境下,如何使用C#生成唯一的ID。首先尝试了随机数,然后是时间戳加随机数的方式,但都存在重复可能。最终采用时间戳加累加数的方法,通过lock同步关键字确保线程安全,并在每秒生成不超过1000个ID。若需求更高并发,可以调整累加数的最大值和ID填充位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#生成唯一的ID(适用于高并发下)

背景:七月份结婚了,跟着老公来了广州,刚入职的一家新公司差不多三个月了,还是一如既往的在做跟表单相关的一些东西,之前的那家公司,表单的ID是由数据库大佬直接写的函数,代码里直接调用就可以了,现在这家公司啥都要自己做,于是,记录一下高并发下生成ID的方法。

1.最开始的尝试是直接用random,当然这显示是不可行的,我自己也知道,这里贴上代码。在这里插入图片描述
2.而后呢,又使用了时间戳加随机数的形式,这种在高并发的情况下还是有可能会生成相同的编号

var Id = DateTime.Now.ToString(“yyyyMMddHHmmssfff”)+GetRamdom(3);

3.最后上网查询,大概得到了这种解决办法,时间戳+累加数

在这里写的这段代码是,每秒生成的编号不会超过1000条
public class UIDHelper
{
private static readonly object Locker = new object();
private static int _sn=0;
public static string GenerateNo(string pre=’"")
{
lock(Locker) //lock关键字可确保当一个线程位于临界值时&#x

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值