我写了一个生成订单号(唯一约束)的函数public void xxx()
{
     //生成订单号  并插入数据库
}如果这段代码并发执行,有可能造成订单号的重复,产生异常
为了避免并发  是不是只要在函数上面写上[STAThread]就可以了?[STAThread]
public void xxx()
{
     //生成订单号  并插入数据库
}

解决方案 »

  1.   

    这当然不行,需要用lock,你要在执行这段代码之前lock一个信号量,看一下sdk文档中多线程的主题吧。
      

  2.   

    private static object myobj;
    lock(myobj)
    {
    .....你的操作。
    }不过我不建议你这么做,你为什么不用数据库的自动增长字段?或者自己生成随机不重复的键值
      

  3.   

    《Java与模试》中有这样一个例子
      

  4.   

    GetDateTime(毫秒级别) + 记录自动编号   这样生成的表单号应该没问题把
      

  5.   


    synchronized(this)
    {//把代码写到这里来}