internal static async Task <bool> PlayAdAsync(this IVpaid vpaid, CancellationToken cancellationToken) #endif { var errorTask = vpaid.GetErrorTask(cancellationToken); var stoppedTask = vpaid.GetStoppedTask(cancellationToken); var approachingEndTask = vpaid.GetApproachingEndTask(cancellationToken); var cancellationTask = cancellationToken.AsTask(); #if SILVERLIGHT && !WINDOWS_PHONE || WINDOWS_PHONE7 var completedTask = await TaskEx.WhenAny(stoppedTask, approachingEndTask, errorTask, cancellationTask); #else var completedTask = await Task.WhenAny(stoppedTask, approachingEndTask, errorTask, cancellationTask); #endif bool result = true; if (completedTask == errorTask) { throw errorTask.Result; } else if (completedTask == cancellationTask) { vpaid.StopAd(); } else if (completedTask == approachingEndTask) { result = false; } cancellationToken.ThrowIfCancellationRequested(); return(result); }
internal static async Task StopAdAsync(this IVpaid vpaid, CancellationToken cancellationToken) #endif { var errorTask = vpaid.GetErrorTask(cancellationToken); var stoppedTask = vpaid.GetStoppedTask(cancellationToken); var cancellationTask = cancellationToken.AsTask(); vpaid.StopAd(); #if SILVERLIGHT && !WINDOWS_PHONE || WINDOWS_PHONE7 var completedTask = await TaskEx.WhenAny(stoppedTask, errorTask, cancellationTask); #else var completedTask = await Task.WhenAny(stoppedTask, errorTask, cancellationTask); #endif if (completedTask == errorTask) { throw errorTask.Result; } cancellationToken.ThrowIfCancellationRequested(); }
internal static async Task InitAdAsync(this IVpaid vpaid, double width, double height, string viewMode, int desiredBitrate, string creativeData, string environmentVariables, CancellationToken cancellationToken) #endif { var errorTask = vpaid.GetErrorTask(cancellationToken); var loadedTask = vpaid.GetLoadedTask(cancellationToken); var cancellationTask = cancellationToken.AsTask(); vpaid.InitAd(width, height, viewMode, desiredBitrate, creativeData, environmentVariables); #if SILVERLIGHT && !WINDOWS_PHONE || WINDOWS_PHONE7 var completedTask = await TaskEx.WhenAny(loadedTask, errorTask, cancellationTask); #else var completedTask = await Task.WhenAny(loadedTask, errorTask, cancellationTask); #endif if (completedTask == errorTask) { throw errorTask.Result; } else if (completedTask == cancellationTask) { vpaid.StopAd(); } cancellationToken.ThrowIfCancellationRequested(); }