public void DeleteApp(IisApplication application) { #if ASYNC_TEST Thread.Sleep(TimeSpan.FromSeconds(2)); #elif !ASYNC_TEST var deleteTask = Task.Run(() => { if (Directory.Exists(application.Path)) { Directory.Delete(application.Path, true); } }); var dropDbTask = Task.Run(() => { if (!string.IsNullOrWhiteSpace(application.DbName)) { DatabaseManager.DropDatabase(application.DbName, application.DbConnectionString); } }); var deleteAppTask = Task.Run(() => { DeleteApplication(application.Name); }); Task.WaitAll(deleteTask, dropDbTask, deleteAppTask); #endif }
IisApplication GetApplicationInfo(DirectoryInfo dir) { var app = new IisApplication { Path = dir.FullName, Name = dir.Name }; var connectionString = WebConfigUtils.GetConnectionString(app.Path, "db"); app.CreateDate = WebConfigUtils.GetCreateDate(app.Path); var dbSize = DatabaseManager.PingDb(connectionString); if (dbSize.HasValue) { var builder = new SqlConnectionStringBuilder(connectionString); app.DbConnectionString = connectionString; app.DbName = builder.InitialCatalog; app.DbSize = dbSize.Value; } return app; }