2011-09-09 62 views
0

我有一些代码需要在无法建立数据库连接时重试,例如每次登录20次。该网站有几十个用户,那么处理这个问题的最好方法是什么?我正在考虑使用计数器,但由于多个用户同时登录,所以可能需要一些线程,这是我不熟悉的。处理数据库连接问题

编辑:

我得到我在哪里实例化的Thread对象的行中的出错“预期的方法名”。这里是我的代码:

private static List<Field.Info> FromDatabase(this Int32 _campId) 
    { 
     List<Field.Info> lstFields = new List<Field.Info>(); 

     Field.List.Response response = new Field.List.Ticket 
     { 
      campId = _campId 
     }.Commit(); 

     if (response.status == Field.List.Status.success) 
     { 
      lstFields = response.fields; 
      lock (campIdLock) 
      { 
       loadedCampIds.Add(_campId); 
      } 
     } 

     if (response.status == Field.List.Status.retry) 
     { 
      Thread th1 = new Thread(new ThreadStart(FromDatabase(_campId))); 

      FromDatabase(_campId); 
     } 

     return lstFields; 
    } 
+0

是用户特定的柜台不是一个解决办法?是的,如果你想管理并行登录,你通常需要很多线程。或者你可能想把状态保持在一种状态机中。 – Vlad

回答

0

我的做法将是一个事件,这增加计数器调用异步梅索德如果计数器< = 20 话,我会阻止当前线程,等待连接的结果。

线程安全的增加你的柜台使用

Interlocked.Increment(ref int counter); 
+0

你能举一个如何做到这一点的代码示例?我从来没有做过任何线程,并且不确定从哪里开始。 – user517406

+0

你可以在msdn上找到这个例子(http://msdn.microsoft.com/de-de/library/dd78zt0c.aspx) –