Я удаленно управляю внешней камерой.Я могу сделать снимок с помощью асинхронного вызова метода TakePhotoAsync()
, и когда снимок сделан и готов к загрузке, происходит событие DownloadReady
, которое содержит DownloadInfo о снятом снимке.У меня есть метод Cam_DownloadReady(...)
для обработки этого события.Это дано API, я ничего не могу изменить.
Но мне нужно сделать снимок синхронно.Что-то вроде вызова TakePhotoAsync()
и ожидания в этой строке, пока не произойдет событие DownloadReady
, которое вызывает метод Cam_DownloadReady(...)
, а после того, как этот метод будет выполнен и завершен, затем // continue..
(как отмечено в разделе кода).Это возможно?Спасибо
public Task<CameraImage> GetImageFromCameraAsync(string cameraId)
{
APIHandler = new CanonAPI();
Camera MainCamera = APIHandler.GetCameraList()[0];
MainCamera.DownloadReady += Cam_DownloadReady;
MainCamera.OpenSession();
MainCamera.TakePhotoAsync();
// wait here until event occurs and is processed
// Cam_DownloadReady(...) is called and finished
// continue ...
}
private void Cam_DownloadReady(Camera sender, DownloadInfo Info)
{
sender.DownloadFile(Info, saveImageDir); //save picture on PC
}