/// <summary> /// Запустить процесс получения каптчи. Асинхронно возвращает введенную каптчу. /// </summary> /// <param name="request">Объект запроса каптчи.</param> private static async Task <VKCaptchaResponse> InvokeCaptchaRequest(VKCaptchaRequest request) { if (CaptchaHandler == null) { return new VKCaptchaResponse(request) { UserResponse = String.Empty, IsCanceled = true } } ; else { return(await Task.Run <VKCaptchaResponse>(() => { VKCaptchaResponse result = null; var resetEvent = new AutoResetEvent(false); CaptchaHandler(request, response => { result = response; resetEvent.Set(); }); resetEvent.WaitOne(); return result; })); } }
/// <summary> /// Выполняет пользователю запрос на ввод каптчи. /// </summary> /// <param name="request">Запрос на ввод каптчи.</param> private async Task <VKCaptchaResponse> InvokeCaptchaAsync(VKCaptchaRequest request) { if (CaptchaRequest == null) { return(new VKCaptchaResponse(request.CaptchaSid)); } return(await CaptchaRequest(request)); }
/// <summary> /// Инициализирует новый экземпляр класса с заданным объектом запрошенной каптчи. /// </summary> /// <param name="request">Объект с информацией о запрошенной каптче.</param> public VKCaptchaResponse(VKCaptchaRequest request) { Request = request; }