У меня есть асинхронная библиотека для обработки аудиофайлов. Кроме того, я хочу предложить эти методы через отдых. Итак, я сделал проект MVC WebApi. Библиотеке нужно некоторое время для запуска, поэтому я добавил класс, который предлагает способ инициализации и предоставляет доступ к основному объекту библиотеки.
public static class MusicHandler
{
public static MusicCapture.MusicCapture MusicCapture;
public static void init()
{
MusicCapture = new MusicCapture.MusicCapture("D:\\Temp", "D:\\test", "E:\\FingerPrintDB2.ss");
MusicCapture.Start();
}
}
Я запускаю его в Application_Start()
protected void Application_Start()
{
MusicHandler.init();
}
Теперь, когда мой метод инициализации содержит некоторые асинхронные вызовы, подобные этому:
var hashedFingerprints = command.Hash().Result;
Программа просто пропустит эти строки. Насколько я могу судить, их не казнят. То же самое происходит, когда я вызываю любой из асинхронных методов объектов из моих конечных точек REST. Когда я запускаю библиотеку не из ASP.NET/MVC, код работает безупречно.
Я нашел несколько комментариев, в которых говорилось, что это проблема из-за взаимоблокировок, но нет советов или кода, как этого избежать/заставить эту работу работать.
Заранее спасибо.