示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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();
        }