title: Transaction (Process ID 84) was deadlocked on lock resources with another process and has been chosen as the deadlock victim
body: <p>I have developed a Monitoring application. So there i have used a Timer function in order to check some values in a SQL Table.</p>
  
  <p>though there are so many function it gives an following error for one function called getLogEntry()</p>
  
  <pre><code>message&gt;Transaction (Process ID 84) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.&lt;/message&gt;
  &lt;innerMessage&gt;
  &lt;/innerMessage&gt;
  &lt;source&gt;.Net SqlClient Data Provider&lt;/source&gt;
  &lt;stackTrace&gt;at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
     at System.Data.SqlClient.SqlDataReader.HasMoreRows()
     at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
     at ShiftAlertSystem.DBAccess.getLogEntry(Int32 nEventLogIdn, connections cn)&lt;/stackTrace&gt;
      &lt;createdAt&gt;2012/06/18 13:10:47&lt;/createdAt&gt;
  </code></pre>
  
  <p>This is the implementation of the function</p>
  
  <pre><code>public LogEntry getLogEntry(int nEventLogIdn, connections cn)
      {
          lock (_objLock)
          {
              LogEntry lgEntObj = new LogEntry();
               SqlConnection NewCon3 = new SqlConnection();
               SqlCommand newCmd2 = null;
               SqlDataReader dr = null;
  
               try
               {
  
  
                   string connectString;
                   // Configuration config = ConfigurationManager.u
                   string DataSource = cryptIT.Decrypt(cn.DataSource_bio);
                   string initialCatalog = cryptIT.Decrypt(cn.InitialCatalog_bio);
                   string user = cryptIT.Decrypt(cn.user_bio);
                   string password = cryptIT.Decrypt(cn.password_bio);
                   bool intergratedSecurity = cn.IntegratedSecurity_bio;
  
                   if (intergratedSecurity)
                   {
                       connectString = "Data Source=" + DataSource + ";Initial Catalog=" + initialCatalog + ";Integrated Security=True";
                   }
                   else
                   {
                       connectString = "Data Source=" + DataSource + ";Initial Catalog=" + initialCatalog + ";User ID=" + user + ";Password=" + password;
                   }
  
                   NewCon3 = new SqlConnection(connectString);
                   NewCon3.Open();
  
  
  
                   newCmd2 = NewCon3.CreateCommand();
                   newCmd2.Connection = NewCon3;
                   newCmd2.CommandType = CommandType.Text;
                   newCmd2.CommandText = @"
                                   SELECT [nUserID]
                                          ,[sUserName]
                                          ,dateadd(s,[nDateTime],'1970/1/1') AS LogDateTime
                                          ,[nEventIdn]
                                          ,[nTNAEvent]
                                          ,[TB_READER].[nReaderIdn]
                                          ,[sName]
                                   FROM 
                                          [TB_EVENT_LOG]
                                          ,[TB_USER]
                                          ,[TB_READER]
                                  WHERE 
  
                                          [nEventLogIdn] = " + nEventLogIdn +
                                           @" AND
                                          [TB_EVENT_LOG].[nUserID] = [TB_USER].[sUserID]
                                          AND
                                          [nFlag]= 1
                                          AND
                                          [TB_EVENT_LOG].[nReaderIdn]=[TB_READER].[nReaderIdn]"
                                           ;
                   dr = newCmd2.ExecuteReader();
  
                   if (dr != null &amp;&amp; dr.Read())
                   {
                       lgEntObj.nUserID = dr.GetInt32(0);
                       lgEntObj.nUserName = dr.GetString(1);
                       lgEntObj.LogDateTime = dr.GetDateTime(2);
                       lgEntObj.nEventIdn = dr.GetInt32(3);
                       lgEntObj.nTNAEvent = dr.GetInt16(4);
                       lgEntObj.nReaderIdn = dr.GetInt32(5);
                       lgEntObj.sName = dr.GetString(6);
                   }
                   dr.Close();
                   newCmd2.Dispose();
                   // NewCon.Close();
                   NewCon3.Close();
  
                   return lgEntObj;
               }
               catch (Exception exc)
               {
                   CenUtility.ErrorLog.CreateLog(exc);
                   return null;
               }
  
               finally
               {
                   if (dr != null)
                       dr.Close(); 
  
                   if(newCmd2 != null)
                       newCmd2.Dispose();
  
  
                       NewCon3.Close();
  
  
               }
  
  
          }
      }
  </code></pre>
  
  <p>Thanks in advance</p>