Esempio n. 1
0
 private static void SyncronizedCall <TProvider>(string providerName, SyncronizedCallDelegate <TProvider> func) where TProvider : class, IDataProvider
 {
     SyncronizedCall <TProvider, object>(providerName, provider =>
     {
         func(provider);
         return(null);
     });
 }
Esempio n. 2
0
        private static TResult SyncronizedCall <TProvider, TResult>(string providerName, SyncronizedCallDelegate <TProvider, TResult> func)
            where TProvider : class, IDataProvider
            where TResult : class
        {
            IDataProvider provider = GetDataProvider(providerName);

            Verify.That(provider is TProvider, "The data provider {0} does not implement the interface {1}", providerName, typeof(TProvider).FullName);

            // DDZ: hardcoded for now, to be fixed
            bool syncDisabled = provider is SqlDataProvider;

            IDisposable scope = null;

            try
            {
                if (!syncDisabled)
                {
                    scope = _resourceLocker.Locker;
                }

                return((TResult)func(provider as TProvider));
            }
            finally
            {
                if (scope != null)
                {
                    scope.Dispose();
                }
            }
        }