private void Init(DataAccess.DataSource dataSourceId, bool readOnly, DataAccessHint hint)
        {
            //lock ( FlashCard.Lock )
            {
                Log.Trace("Thread=" + Thread.CurrentThread.Name + "   Mutex.WaitOne");
                DataAccess.Mutex.WaitOne();

                try
                {
                    DataAccess.CheckStarted();

                    _con = DataAccess.GetConnection(dataSourceId, readOnly);

                    if (!readOnly)
                    {
                        _trx = _con.BeginTransaction();
                    }
                }
                catch (Exception e)
                {
                    Log.Trace("Thread=" + Thread.CurrentThread.Name + "   Mutex.ReleaseMutex");
                    DataAccess.Mutex.ReleaseMutex();

                    Log.Error("Error instantiating DataAccessTransaction", e);

                    throw;
                }
            }

            DataSourceId = dataSourceId;

            ReadOnly = readOnly;

            Hint = hint;
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="readOnly"></param>
 public DataAccessTransaction(DataAccess.DataSource dataSourceId, bool readOnly)
 {
     Init(dataSourceId, readOnly, DataAccessHint.None);
 }
 /// <summary>
 /// </summary>
 public DataAccessTransaction(DataAccess.DataSource dataSourceId)
 {
     Init(dataSourceId, false, DataAccessHint.None);
 }