首页 新闻 会员 周边

请求超时C#语句怎么写?

0
[已解决问题] 解决于 2013-08-05 15:00

有一个线程,是一个死循环,做的是判断数据库的每一条数据的状态

如果states是1的话 就 改成2

如果请求超时的话 就将线程挂起10秒继续做判断

这个要怎么写

C#
.F.的主页 .F. | 初学一级 | 园豆:13
提问于:2013-08-05 13:03
< >
分享
最佳答案
1

while(true)

{

    sqlcommand cmd;

    cmd.CommandText = "update t set states =2 where states = 1";

    cmd.Timeout = 10 * 1000;

   try{cmd.execute;} catch(timeoutexception e){}
}

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2013-08-05 13:59

我是想先将数据库内的数据的状态改成1:(正在处理这条数据)---------这里设置一个超时时间?

一个web请求方法(处理数据)  返回处理结果的字符串(成功or失败)------这条数据会不会请求超时?

如果处理数据成功,数据库的这条数据状态改为2,

我这情况要怎么办呢

.F. | 园豆:13 (初学一级) | 2013-08-05 14:19

@我想我是新手: 

sqltransaction sqltrans = sqlConn.BeginTransaction();

try

{

sqlcommand cmd;

cmd.execute('update t set states = 1 where state != 1');

 

    // 调用 web 方法处理数据。

 

// 处理成功

    cmd.execute('update t set states = 2 where state = 1')

 

sqltrans.commit()

}

catch(timeoutexceptin e){sqltrans.rollback();}

Launcher | 园豆:45045 (高人七级) | 2013-08-05 14:30

@Launcher: 嗯     这个可以有   谢谢哈...

.F. | 园豆:13 (初学一级) | 2013-08-05 14:59

@Launcher: 这位老师...是不是在try语句里无论对数据进行怎样的更新,只要出错   都会回到这条数据的最原始的状态啊

.F. | 园豆:13 (初学一级) | 2013-08-05 15:43

@我想我是新手: 是的,除非你调用的 web 方法修改了同一条记录,这里就回滚不了。你需要使用分布式事务来在多个机器上共享事务。

Launcher | 园豆:45045 (高人七级) | 2013-08-05 15:48

@Launcher: 嗯  谢谢...

.F. | 园豆:13 (初学一级) | 2013-08-05 16:21

@.F.: 这段代码是个死循环啊

chenping2008 | 园豆:9836 (大侠五级) | 2013-08-15 12:46
其他回答(1)
0

try

catch(timeoutexception ee)

{

  thread.sleep(10*1000);

}

chenping2008 | 园豆:9836 (大侠五级) | 2013-08-05 13:12

那我要在哪里设置一个超时的时间呢?

是在进行判断查询出states是1之前进行设置

还是在将states从1改成2的时候来进行设置?

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-08-05 13:19

我在超时之后还要对这一条数据进行操作...该怎么办?

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-08-05 13:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册