点击或拖拽改变大小

SoftNumericalOrder 类

一个用于自动流水号生成的类,必须指定保存的文件,实时保存来确认安全
继承层次
SystemObject
  HslCommunication.BasicFrameworkSoftFileSaveBase
    HslCommunication.BasicFrameworkSoftNumericalOrder

命名空间:  HslCommunication.BasicFramework
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.0.0.0 (12.0.0.0)
语法
public sealed class SoftNumericalOrder : SoftFileSaveBase

SoftNumericalOrder 类型公开以下成员。

构造函数
  名称说明
公共方法SoftNumericalOrder
实例化一个流水号生成的对象
Top
属性
  名称说明
公共属性FileSavePath
文件存储的路径
(继承自 SoftFileSaveBase。)
公共属性ILogNet
日志记录类
(继承自 SoftFileSaveBase。)
Top
方法
  名称说明
公共方法ClearNumericalOrder
清除流水号计数,进行重新计数
公共方法Equals (继承自 Object。)
公共方法GetHashCode (继承自 Object。)
公共方法GetLongOrder
单纯的获取数字形式的流水号
公共方法GetNumericalOrder
获取流水号数据
公共方法GetNumericalOrder(String)
获取流水号数据
公共方法GetType (继承自 Object。)
公共方法LoadByFile
不使用解密方法从文件读取数据
(继承自 SoftFileSaveBase。)
公共方法LoadByFile(ConverterString, String)
使用用户自定义的解密方法从文件读取数据
(继承自 SoftFileSaveBase。)
公共方法LoadByString
加载流水号
(重写 SoftFileSaveBaseLoadByString(String).)
公共方法SaveToFile
不使用加密方法保存数据到文件
(继承自 SoftFileSaveBase。)
公共方法SaveToFile(ConverterString, String)
使用用户自定义的加密方法保存数据到文件
(继承自 SoftFileSaveBase。)
公共方法ToSaveString
获取流水号的值
(重写 SoftFileSaveBaseToSaveString.)
公共方法ToString (继承自 Object。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
重要事项 重要事项
序号生成器软件,当获取序列号,清空序列号操作后,会自动的将ID号存储到本地的文件中,存储方式采用乐观并发模型实现。
示例
此处举个例子,也是Demo程序的源代码,包含了2个按钮的示例和瞬间调用100万次的性能示例。
提示 提示:
百万次调用的实际耗时取决于计算机的性能,不同的计算机的表现存在差异,比如作者的:i5-4590cpu,内存ddr3-8G表示差不多在800毫秒左右
示例代码
public partial class FormSeqCreate : HslFormContent
{

    public FormSeqCreate( )
    {
        InitializeComponent( );
    }


    private HslCommunication.BasicFramework.SoftNumericalOrder softNumericalOrder;    // 序列号生成器对象

    private void FormSeqCreate_Load( object sender, EventArgs e )
    {
        label1.BackColor = FormLoad.ThemeColor;
        softNumericalOrder = new HslCommunication.BasicFramework.SoftNumericalOrder(
               "ABC",              // "ABC201711090000001" 中的ABC前缀,代码中仍然可以更改ABC
               "yyyyMMdd",         // "ABC201711090000001" 中的20171109,可以格式化时间,也可以为"",也可以设置为"yyyyMMddHHmmss";
               7,                  // "ABC201711090000001" 中的0000001,总位数为7,然后不停的累加,即使日期时间变了,也不停的累加,最好长度设置大一些
               Application.StartupPath + @"\numericalOrder.txt"  // 该生成器会自动存储当前值到文件去,实例化时从文件加载,自动实现数据同步
               );


        if (!Program.ShowAuthorInfomation)
        {
            label2.Visible = false;
            linkLabel1.Visible = false;
        }
    }

    private void userButton1_Click( object sender, EventArgs e )
    {
        // 获取流水号,带有默认的数据头,也即实例化中的"ABC"
        string seqNumber = softNumericalOrder.GetNumericalOrder( );
        textBox1.AppendText( seqNumber + Environment.NewLine );
    }

    private void userButton3_Click( object sender, EventArgs e )
    {
        // 获取流水号,带有自定义的数据头
        string seqNumber = softNumericalOrder.GetNumericalOrder( "XYZ" );
        textBox1.AppendText( seqNumber + Environment.NewLine );
    }

    private void userButton2_Click( object sender, EventArgs e )
    {
        // 百万次的流水号测试
        DateTime start = DateTime.Now;
        for (int i = 0; i < 1000000; i++)
        {
            string seqNumber = softNumericalOrder.GetNumericalOrder( "XYZ" );
        }
        double spend = (DateTime.Now - start).TotalMilliseconds;
        textBox1.AppendText( "耗时:" + spend + Environment.NewLine );
    }


    // 忽略
    private void linkLabel1_LinkClicked( object sender, LinkLabelLinkClickedEventArgs e )
    {
        try
        {
            System.Diagnostics.Process.Start( linkLabel1.Text );
        }
        catch (Exception ex)
        {
            HslCommunication.BasicFramework.SoftBasic.ShowExceptionMessage( ex );
        }
    }
}
参见