Esempio n. 1
0
        public Guid SetInterval(JavaScriptValue callback, int delay)
        {
            if (callback.ValueType != JavaScriptValueType.Function)
            {
                throw new ArgumentException("SetInterval only accepts javascript function");
            }
            CancellationTokenSource source = new CancellationTokenSource();
            Guid   id = addCallback(callback, source);
            Action a  = ServiceNode.GetService <IJSValueConverterService>().FromJSValue <Action>(callback);

            Task.Factory.StartNew(async() =>
            {
                while (true)
                {
                    try
                    {
                        await Task.Delay(delay, source.Token);
                        a();
                    }
                    catch (OperationCanceledException)
                    {
                        return;
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }, source.Token);
            return(id);
        }