2013-12-12 3 views
1

Когда я был отладки код:Почему код был неожиданным при отладке?

void Application_End(object sender, EventArgs e) 
     { 
      //execute when the application closed 
      Application.Lock(); 
      Dictionary<string, VisitorUser> dic = new Dictionary<string, VisitorUser>(); 
      dic = (Dictionary<string, VisitorUser>)Application["MeetUsers"]; 
      if (dic != null) 
      { 
       StringBuilder sbVisitor = new StringBuilder(); 
       foreach (KeyValuePair<string, VisitorUser> key in dic) 
       { 
        VisitorUser vu = key.Value; 
        sbVisitor.Append(" select '"+vu.UserName+"','"+vu.ImgUrl+"','"+vu.NickName+"',"+vu.LoginTime+" union "); 
       } 
       new VipUserBLL().BackUpVisitor(sbVisitor.ToString().Trim().Trim("union".ToCharArray())); 
      } 
      Application.UnLock(); 
     } 

Он остановился:

StringBuilder sbVisitor = новый StringBuilder();

и не продолжать выполнять. Как это могло случиться, в чем проблема?

ответ

1

Это происходит на первом или последующих циклах?

Есть ли new VipUserBLL().BackUpVisitor.. асинхронный вызов?

Я не знаю, почему это произойдет, но я бы реорганизовать код так:

try 
{ 
    //execute when the application closed 
    Application.Lock(); 
    Dictionary<string, VisitorUser> dic = new Dictionary<string, VisitorUser>(); 
    dic = (Dictionary<string, VisitorUser>)Application["MeetUsers"]; 
    if (dic != null) 
    { 
     StringBuilder sbVisitor = new StringBuilder(); 
     foreach (KeyValuePair<string, VisitorUser> key in dic) 
     { 
      VisitorUser vu = key.Value; 
      sbVisitor.Append(" select '" + vu.UserName + "','" + vu.ImgUrl + "','" + vu.NickName + "'," + vu.LoginTime + " union "); 
     } 
     new VipUserBLL().BackUpVisitor(sbVisitor.ToString().Trim().Trim("union".ToCharArray())); 
    } 
} 
catch (Exception E) 
{ 
    // log error, you can put a break point here when debugging. 
} 
finally 
{ 
    Application.UnLock(); 
} 
Смежные вопросы