怎么让业务停止一段时间再继续执行,不是进程休眠!!!
举例说明: 比如我有个函数,里面有事务操作,我想在打开事务之后,让程序停止一段时间(停止时间内可执行其它操作),然后再提交事务 ,我主要想测试事务过期时间问题。PS:
首先休眠不能达到测试目的,不管我休眠多长时间,进程会被休眠掉,休眠终止后事务仍然能提交成功而不过期。另外我尝试用定时器控制了下,我把定时器插在事务提交之前,但是定时器在打开之后,程序并不是等定时器关闭后函数再return,求高人指点,小弟不甚感激。
   

解决方案 »

  1.   

    延迟操作
    System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(method));
    t.Change(1000, 1000);
    private void method(object state)
    {}
      

  2.   


    请问这种写法只能延迟method 这个么?  我是想这样延迟:   
    private void Test()
    {
      事务 open ();
      
      //延迟一定时间,最好能自定义  事务 commit(); 
    }
      

  3.   

    public void Delay(int sec)
    {
    for(;;)
    {
    DateTime s=DateTime.Now:
    if((DateTime.Now - s).TotalSecond>sec)
    return;
    Application.DoEvents();
    }
    }
      

  4.   


    我是做HIS系统的,就是在结算申请和结算的时候,那里的业务操作比较多,大概操作10多张表,但我有点不太理解,因为我的业务都是先运算完毕后,最后把数据库操作集合在一起作事务控制,这样按道理应该不会超时的,单机测试重未出现过超时现象,但系统正式运行后,偶发性的就出现超市现象了。
      

  5.   

     using(TransactionScope scope = new TransactionScope()) { //方法1 //方法2: scope.Complete(); } 
      

  6.   


    不知道为何“按道理应该不会超时”。只要是在一个事务中涉及读写很多记录(特别是SQL Server是及其“悲观的”或者说“严谨的”Read Committed级别),那么如果这些记录也被大量业务使用,就会影响事务完成时间。我不知道你的“一起做事务控制”具体是什么内容。但是可能:事务中有些部分其实没有必要那么高的实时性,例如一个交易付款时我们可以仅仅处理必须立刻处理的记录,而将转账和汇总等等放到过一会儿,甚至夜间才执行。等等。
      

  7.   

     就用计时器就可以了啊。你可以看看java的计时器,我觉得应该可以解决的