Если вы сделаете методы асинхронными:
async Task AsyncDelete(string name)
{
var cmd = new SqlCommand
{
//Initialize here
};
await cmd.ExecuteNonQueryAsync();
}
Тогда вы можете просто ждать их:
DoSomething();
await AsyncDelete(objectFileInfo.FullName);
await AsyncCreateIndex(destFileName, false, RepNum, EntityType, Domain, Org, EntityValue, bufferData);
Нет необходимости в отдельной теме.
Возможно, Ваши побочные эффекты прибывают из того, что почти все банки включают MANIFEST.MF, и Вы не получаете правильный. Для чтения MANIFEST.MF из веб-приложения я сказал бы:
ServletContext application = getServletConfig().getServletContext();
InputStream inputStream = application.getResourceAsStream("/META-INF/MANIFEST.MF");
Manifest manifest = new Manifest(inputStream);
Обратите внимание на то, что рабочий Tomcat от Eclipse не является тем же как одним только рабочим Tomcat как игры Eclipse с classloader.
Путем по умолчанию работа загрузчиков класса должна подчиниться родителю прежде, чем делать попытку к поиску их собственных ресурсов. Таким образом, если загрузчик родительского класса имеет какую-либо декларацию в наличии, это - то, что Вы получите. На самом деле серверы приложений не обязательно делают это, чтобы позволить приложениям переопределять версии библиотек. Далее, загрузчики класса могут иметь несколько банок и следовательно несколько деклараций.
Это может быть в состоянии получить URL ресурса одного из Вашего исключительно именованного ресурса. Откройте соединение. Бросок к JarURLConnection
. Доберитесь JarFile
. Загрузите декларацию из этого. Это не может работать, особенно если Tomcat взрывает войну.
[Обновление], Конечно, сам военный файл не находится на пути к классу. Путь к классу будет иметь что-то как WEB-INF/lib / ( .jar | .zip) и WEB-INF/classes/. Получение ресурса от эти ServletContext
должно работать.
Лучшее решение: Сделайте что-то другое.:)
Не знайте об "официальном" способе считать его, но если MANIFEST.MF не может быть правильно загружен как ресурс, как насчет того, чтобы пытаться получить его путь из "ServletContext.getRealPath ()" на некотором веб-пути, определенном в Вашем приложении?
Запись версии приложения также некоторым еще помещает (файл свойств в WEB-INF/classes) муравьем во время сборки другое решение, которое прибывает по моему мнению.
немного поздно, но это работает для меня (веб-приложение на Glassfish)
Properties prop = new Properties();
prop.load(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"));
System.out.println("All attributes:" + prop.stringPropertyNames());
System.out.println(prop.getProperty("{whatever attribute you want}"));