怎么让业务停止一段时间再继续执行,不是进程休眠!!!
举例说明: 比如我有个函数,里面有事务操作,我想在打开事务之后,让程序停止一段时间(停止时间内可执行其它操作),然后再提交事务 ,我主要想测试事务过期时间问题。PS:
首先休眠不能达到测试目的,不管我休眠多长时间,进程会被休眠掉,休眠终止后事务仍然能提交成功而不过期。另外我尝试用定时器控制了下,我把定时器插在事务提交之前,但是定时器在打开之后,程序并不是等定时器关闭后函数再return,求高人指点,小弟不甚感激。
举例说明: 比如我有个函数,里面有事务操作,我想在打开事务之后,让程序停止一段时间(停止时间内可执行其它操作),然后再提交事务 ,我主要想测试事务过期时间问题。PS:
首先休眠不能达到测试目的,不管我休眠多长时间,进程会被休眠掉,休眠终止后事务仍然能提交成功而不过期。另外我尝试用定时器控制了下,我把定时器插在事务提交之前,但是定时器在打开之后,程序并不是等定时器关闭后函数再return,求高人指点,小弟不甚感激。
System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(method));
t.Change(1000, 1000);
private void method(object state)
{}
请问这种写法只能延迟method 这个么? 我是想这样延迟:
private void Test()
{
事务 open ();
//延迟一定时间,最好能自定义 事务 commit();
}
{
for(;;)
{
DateTime s=DateTime.Now:
if((DateTime.Now - s).TotalSecond>sec)
return;
Application.DoEvents();
}
}
我是做HIS系统的,就是在结算申请和结算的时候,那里的业务操作比较多,大概操作10多张表,但我有点不太理解,因为我的业务都是先运算完毕后,最后把数据库操作集合在一起作事务控制,这样按道理应该不会超时的,单机测试重未出现过超时现象,但系统正式运行后,偶发性的就出现超市现象了。
不知道为何“按道理应该不会超时”。只要是在一个事务中涉及读写很多记录(特别是SQL Server是及其“悲观的”或者说“严谨的”Read Committed级别),那么如果这些记录也被大量业务使用,就会影响事务完成时间。我不知道你的“一起做事务控制”具体是什么内容。但是可能:事务中有些部分其实没有必要那么高的实时性,例如一个交易付款时我们可以仅仅处理必须立刻处理的记录,而将转账和汇总等等放到过一会儿,甚至夜间才执行。等等。