async public Task <gView.Framework.Data.IDataset> Next()
        {
            if (_pos == 0)
            {
                _pos++;
                gView.DataSources.PostGIS.PostGISDataset dataset = new gView.DataSources.PostGIS.PostGISDataset();
                await dataset.SetConnectionString("Server=" + txtServer.Text + ";Port=" + txtPort.Text + ";User Id=" + txtUser.Text + ";Password="******";Database=" + txtDataset.Text);

                await dataset.Open();

                // Dataset in _dataset zwischenspeichern, damit referenz bestehen bleibt
                // Dispose ist danach vom Benutzer auszuführen wenn das Objekt nicht mehr verwendet wird.
                // Ansonsten kann es vorkommen, dass der Garbagecolletor das Dispose ausführt, wenn
                // ein Anwendung ein dataset abholt, Geoprocessing mit den Layern durchführt und danach
                // das Dataset Objekt nicht mehr abholt.
                // Beim Dispose werden dann näml. auch die Datenbankverbingen (wärend eines Geoprocessings)
                // abgeschnitten !!!
                return(_dataset = dataset);
            }
            return(null);
        }
        public T AllocConnection(gView.Framework.Data.IDataset dataset)
        {
            lock (_lockThis)
            {
                if (_disposed)
                {
                    return(null);
                }

                _lastAccess = DateTime.Now;

                if (_locked)
                {
                    return(null);         // Sollte eigentlich nicht vorkommen
                }
                // Aufrufende Routinen sollen nicht parallel aufrufen

                if (_connection == null)
                {
                    _connection = OpenConnection(dataset);
                    if (_connection != null)
                    {
                        //
                        // erst beim wieder Freigeben starten...
                        //
                        //_lastAccess = DateTime.Now;
                        //StartTimer();
                    }
                    else
                    {
                        return(null);
                    }
                }

                _locked = true;
                return(_connection);
            }
        }
 protected abstract T OpenConnection(gView.Framework.Data.IDataset dataset);