Exemple #1
0
        private async void Animate(AsyncContext context, IEnumerable<ParticleState> states)
        {
            var en = states.GetEnumerator();

            while (en.MoveNext())
            {
                var state = en.Current;
                Color = state.Color * Opacity;
                Scale = new Vector2(state.Scale);

                if (state.Duration <= 0)
                    continue;

                if (!en.MoveNext())
                    await context.Delay(TimeSpan.FromMilliseconds(state.Duration));
                else
                {
                    var nextState = en.Current;
                    await TaskEx.WhenAll<TimeSpan>(
                        (Task<TimeSpan>)context.Animate(TimeSpan.FromMilliseconds(state.Duration), state.Scale, nextState.Scale, v => Scale = new Vector2(v)),
                        (Task<TimeSpan>)context.Animate(TimeSpan.FromMilliseconds(state.Duration), state.Color, nextState.Color, v => Color = v));
                }
            }
            Screen.RemoveEntity(this);
            if (OnDecay != null)
                OnDecay(this, EventArgs.Empty);
        }
Exemple #2
0
 private static void addSubscription(AsyncContext asyncContext)
 {
     lock (asyncContext)
       {
     eventSubscriptions.Add(asyncContext);
       }
 }
Exemple #3
0
        public async Task<LiveConnectClient> Login()
        {
            LiveLoginResult result = await AuthClient.InitializeAsync(Scopes);
            if (result.Status == LiveConnectSessionStatus.Connected)
            {
                return new LiveConnectClient(result.Session);
            }
            _context = new AsyncContext
                                {
                                    WaitHandle = new AutoResetEvent(false)
                                };
            Deployment.Current.Dispatcher.BeginInvoke(() => Login(_context));
            await Task.Factory.StartNew(() => _context.WaitHandle.WaitOne());

            if (_context.Error != null)
            {
                throw _context.Error;
            }
            result = _context.LoginResult;

            if (result.Status == LiveConnectSessionStatus.Connected)
            {
                return new LiveConnectClient(result.Session);
            }
            return null;
            
        }
Exemple #4
0
        private static void fireEvent()
        {
            AsyncContext[] subscriptions;
              lock (eventSubscriptions)
              {
            subscriptions = new AsyncContext[eventSubscriptions.Count];
            eventSubscriptions.CopyTo(subscriptions);
            eventSubscriptions.Clear();
              }

              if (0 < subscriptions.Length)
              {
            var response = new EventResponse();
            foreach (var elm in subscriptions)
            {
              try
              {
            elm.completeCall(response.toByteArray());
              }
              catch (Exception e)
              {
              }
            }
              }
        }
Exemple #5
0
        private static void executeAsync2(IRpcClientInfo client, AsyncContext asyncState, byte[] bytes)
        {
            using (client.Impersonate())
              {
            var request = Serializer.Deserialize<EventRequest>(new MemoryStream(bytes));

            addSubscription(asyncState);
              }
        }
Exemple #6
0
 private async void Login(AsyncContext context)
 {
     try
     {
         context.LoginResult = await AuthClient.LoginAsync(Scopes);
     }
     catch (Exception e)
     {
         context.Error = e;
     }
     finally
     {
         context.WaitHandle.Set();
     }   
 }
        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            var asyncContext = new AsyncContext(0);
            var ar = new AsyncContextResult(extraData, asyncContext.WaitHandle);

            // Set the completion handler for when all asynchronous work completes:
            if (cb != null)
                asyncContext.SetCompleted(() => { ar.SetCompleted(); cb(ar); });
            else
                asyncContext.SetCompleted(() => { });

            // Start the asynchronous work:
            HandleRequestAsync(context, asyncContext);

            return ar;
        }
Exemple #8
0
        protected RESTRequest(AsyncRESTHandler handler, HttpContext http, AsyncContext work)
        {
            this.handler = handler;
            this.http = http;
            this.work = work;
            this.req = http.Request;
            this.rsp = http.Response;

            // Remove the /path/to/file.ashx prefix from the request URL:
            string basePath = req.ApplicationPath.RemoveIfEndsWith("/") + req.AppRelativeCurrentExecutionFilePath.Substring(1);
            url = req.Url.AbsolutePath.RemoveIfStartsWith(basePath, StringComparison.OrdinalIgnoreCase).RemoveIfStartsWith("/", StringComparison.Ordinal);

            // Split the url by '/' into route portions:
            route = url.Split(_splitChars, StringSplitOptions.RemoveEmptyEntries);
            // Unescape route parts:
            for (int i = 0; i < route.Length; ++i)
                route[i] = Uri.UnescapeDataString(route[i]);
        }
        public override void HandleRequestAsync(HttpContext http, AsyncContext work)
        {
            try
            {
                // NOTE(jsd): Calling `work.Done()` will mark the request as completed in the event that no other async work has been done.
                var req = CreateRequestHandler(http, work);

                if (req == null)
                {
                    work.Done();
                    return;
                }

                req.ProcessRequest();
            }
            catch (Exception ex)
            {
                http.Response.Clear();
                http.Response.StatusCode = 500;
                http.Response.Output.WriteLine(ex.ToString());
                http.Response.End();
                work.Done();
            }
        }
		public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state)
		{
			GetResponseDelegate d = new GetResponseDelegate (GetAsyncResponse);
			DelegateAsyncResult result = new DelegateAsyncResult ();
			AsyncContext userContext = new AsyncContext (d, result, callback, state);
			result.AsyncResult = d.BeginInvoke (new AsyncCallback (DelegateAsyncResult.Callback), userContext);
			return result;
		}
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncContextThread"/> class, creating a child thread waiting for commands. If <paramref name="sta"/> is <c>true</c>, then the child thread is an STA thread (throwing <see cref="NotSupportedException"/> if the platform does not support STA threads).
 /// </summary>
 public AsyncContextThread(bool sta)
 {
     _context = new AsyncContext();
     _context.SynchronizationContext.OperationStarted();
     _thread = new SingleThreadedApartmentThread(Execute, sta);
 }
 public string State() => AsyncContext.Run(() => SetDivarStateAsync(bu));
Exemple #13
0
 public static void RuncSync(Func <Task> action)
 {
     AsyncContext.Run(action);
 }
Exemple #14
0
        public void Session_ProgressObservable_IntegrationTests(ProgressMode mode)
        {
            const int ObjectSize      = 1000000;
            const int ObjectsToRecord = 2;

            AsyncContext.Run(async() =>
            {
                var realm            = await SyncTestHelpers.GetIntegrationRealm("progress");
                var completionTCS    = new TaskCompletionSource <ulong>();
                var callbacksInvoked = 0;

                var session    = realm.GetSession();
                var observable = session.GetProgressObservable(ProgressDirection.Upload, mode);

                for (var i = 0; i < ObjectsToRecord; i++)
                {
                    realm.Write(() =>
                    {
                        realm.Add(new HugeSyncObject(ObjectSize));
                    });
                }
                var token = observable.Subscribe(p =>
                {
                    try
                    {
                        callbacksInvoked++;

                        Assert.That(p.TransferredBytes, Is.LessThanOrEqualTo(p.TransferableBytes));

                        if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                        {
                            Assert.That(p.TransferableBytes, Is.GreaterThan(ObjectSize));
                            Assert.That(p.TransferableBytes, Is.LessThan((ObjectsToRecord + 1) * ObjectSize));
                        }
                    }
                    catch (Exception e)
                    {
                        completionTCS.TrySetException(e);
                    }

                    if (p.TransferredBytes == p.TransferableBytes)
                    {
                        completionTCS.TrySetResult(p.TransferredBytes);
                    }
                });

                realm.Write(() =>
                {
                    realm.Add(new HugeSyncObject(ObjectSize));
                });

                var totalTransferred = await completionTCS.Task;

                if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                {
                    Assert.That(totalTransferred, Is.GreaterThanOrEqualTo(ObjectSize));

                    // We add ObjectsToRecord + 1 items, but the last item is added after subscribing
                    // so in the fixed mode, we should not get updates for it.
                    Assert.That(totalTransferred, Is.LessThan((ObjectsToRecord + 1) * ObjectSize));
                }
                else
                {
                    Assert.That(totalTransferred, Is.GreaterThanOrEqualTo((ObjectsToRecord + 1) * ObjectSize));
                }

                Assert.That(callbacksInvoked, Is.GreaterThan(1));

                token.Dispose();
                realm.Dispose();
                Realm.DeleteRealm(realm.Config);
            });
        }
 public string City() => AsyncContext.Run(() => SetDivarCityAsync(bu));
Exemple #16
0
 static void Main(string[] args)
 {
     AsyncContext.Run(() => Fetch());
 }
Exemple #17
0
 public ReturnedSaveFuncInfo Save(string tranName = "") => AsyncContext.Run(() => SaveAsync(tranName));
        public void ChangeEncoderType()
        {
            TestHelper.SetConfigurationDefaults();

            AsyncContext.Run(async() =>
            {
                var vidCaptureHandler = new VideoStreamCaptureHandler("/home/pi/videos/tests", "avi");

                TestHelper.CleanDirectory("/home/pi/videos/tests");

                using (var vidEncoder = new MMALVideoEncoder(vidCaptureHandler, new MMAL_RATIONAL_T(25, 1), DateTime.Now.AddSeconds(20)))
                {
                    vidEncoder.ConfigureOutputPort(0, MMALEncoding.MJPEG, MMALEncoding.I420, 10, 25000000);

                    //Create our component pipeline.
                    fixture.MMALCamera.Camera.VideoPort
                    .ConnectTo(vidEncoder);
                    fixture.MMALCamera.Camera.PreviewPort
                    .ConnectTo(new MMALVideoRenderer());

                    fixture.MMALCamera.ConfigureCameraSettings();

                    //Record video for 20 seconds
                    await fixture.MMALCamera.BeginProcessing(fixture.MMALCamera.Camera.VideoPort, vidEncoder);

                    if (System.IO.File.Exists(vidCaptureHandler.GetFilepath()))
                    {
                        var length = new System.IO.FileInfo(vidCaptureHandler.GetFilepath()).Length;
                        Assert.True(length > 0);
                    }
                    else
                    {
                        Assert.True(false, $"File {vidCaptureHandler.GetFilepath()} was not created");
                    }
                }

                vidCaptureHandler = new VideoStreamCaptureHandler("/home/pi/videos/tests", "mjpeg");

                using (var vidEncoder = new MMALVideoEncoder(vidCaptureHandler, new MMAL_RATIONAL_T(25, 1), DateTime.Now.AddSeconds(20)))
                {
                    vidEncoder.ConfigureOutputPort(0, MMALEncoding.MJPEG, MMALEncoding.I420, 90, 25000000);

                    //Create our component pipeline.
                    fixture.MMALCamera.Camera.VideoPort
                    .ConnectTo(vidEncoder);
                    fixture.MMALCamera.Camera.PreviewPort
                    .ConnectTo(new MMALVideoRenderer());

                    fixture.MMALCamera.ConfigureCameraSettings();

                    //Record video for 20 seconds
                    await fixture.MMALCamera.BeginProcessing(fixture.MMALCamera.Camera.VideoPort, vidEncoder);

                    if (System.IO.File.Exists(vidCaptureHandler.GetFilepath()))
                    {
                        var length = new System.IO.FileInfo(vidCaptureHandler.GetFilepath()).Length;
                        Assert.True(length > 0);
                    }
                    else
                    {
                        Assert.True(false, $"File {vidCaptureHandler.GetFilepath()} was not created");
                    }
                }
            });
        }
        public override int Run(string[] remainingArguments)
        {
            AsyncContext.Run(() => DoWork(remainingArguments[0].ToAbsoluteDirectoryPath()));

            return(0);
        }
Exemple #20
0
        private static void fireShutDownEvent()
        {
            AsyncContext[] subscriptions;
              lock (eventSubscriptions)
              {
            subscriptions = new AsyncContext[eventSubscriptions.Count];
            eventSubscriptions.CopyTo(subscriptions);
            eventSubscriptions.Clear();
              }

              if (0 < subscriptions.Length)
              {
            foreach (var elm in subscriptions)
            {
              try
              {
            elm.completeCall((uint) RpcError.RPC_S_SERVER_UNAVAILABLE);
              }
              catch (Exception e)
              {
              }
            }
              }
        }
        public void TaskSchedulerCurrent_FromAsyncContext_IsAsyncContextTaskScheduler()
        {
            TaskScheduler observedScheduler = null;
            var context = new AsyncContext();
            context.Factory.Run(() =>
            {
                observedScheduler = TaskScheduler.Current;
            });

            context.Execute();

            Assert.AreSame(context.Scheduler, observedScheduler);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncContextTaskScheduler"/> class.
 /// </summary>
 /// <param name="context">The async context for this task scheduler. May not be <c>null</c>.</param>
 public AsyncContextTaskScheduler(AsyncContext context)
 {
     _context = context;
 }
 /// <summary>
 /// Can be over-ridden in a derived class to handle the incomming RPC request, or you can
 /// subscribe to the OnExecuteAsync event.
 /// </summary>
 public virtual void ExecuteAsync(IRpcClientInfo client, AsyncContext asyncContext, byte[] input)
 {
     RpcExecuteAsyncHandler proc = _asyncHandler;
       if (proc != null)
       {
     proc(client, asyncContext, input);
       }
 }
 public abstract void HandleRequestAsync(HttpContext http, AsyncContext work);
 public void Id_IsEqualToTaskSchedulerId()
 {
     var context = new AsyncContext();
     Assert.AreEqual(context.Scheduler.Id, context.Id);
 }
 protected abstract RESTRequest CreateRequestHandler(HttpContext http, AsyncContext work);
Exemple #27
0
 public void BulkInsertDataFromDataTableIntoMdbSynchronouslyWithoutDeadLock() =>
 AsyncContext.Run(() => BulkInsertDataFromDataTableIntoMdbCore());
        public void Test_ClassSetPermissions()
        {
            SyncTestHelpers.RequiresRos();

            AsyncContext.Run(async() =>
            {
                var userA = await SyncTestHelpers.GetUserAsync();
                var userB = await SyncTestHelpers.GetUserAsync();
                var userC = await SyncTestHelpers.GetUserAsync();

                var realmUri = await CreateRealm(r =>
                {
                    CreatePermissions(ClassPermission.Get <ObjectWithPermissions>(r).Permissions);

                    var reader = PermissionRole.Get(r, "reader");
                    reader.Users.Add(userA);
                    reader.Users.Add(userB);
                    reader.Users.Add(userC);

                    var writer = PermissionRole.Get(r, "writer");
                    writer.Users.Add(userA);
                    writer.Users.Add(userB);

                    var admin = PermissionRole.Get(r, "admin");
                    admin.Users.Add(userA);
                });

                using (var realm = GetRealm(userB, realmUri))
                {
                    var subscription = await SubscribeToObjectsAsync(realm);

                    // B is 'writer' - shouldn't be able to update the role access level
                    realm.Write(() =>
                    {
                        var readerPermission       = Permission.Get <ObjectWithPermissions>("reader", realm);
                        readerPermission.CanUpdate = true;
                        readerPermission.CanCreate = true;
                    });

                    await WaitForSyncAsync(realm);
                }

                using (var realm = GetRealm(userC, realmUri))
                {
                    // C shouldn't be able to create objects
                    var subscription = await SubscribeToObjectsAsync(realm);
                    AssertRealmPrivileges(realm, RealmPrivileges.Read | RealmPrivileges.Update | RealmPrivileges.ModifySchema | RealmPrivileges.SetPermissions);
                    AssertClassPrivileges(realm, ClassPrivileges.Read | ClassPrivileges.Subscribe);
                    AssertObjectPrivileges(realm, ObjectPrivileges.Read);

                    Assert.That(subscription.Results.Count(), Is.EqualTo(3));

                    AddObjectsToRealm(realm, new[] { 4, 5, 6 });

                    Assert.That(subscription.Results.Count(), Is.EqualTo(6));
                    await WaitForSyncAsync(realm);
                    Assert.That(subscription.Results.Count(), Is.EqualTo(3));
                }

                using (var realm = GetRealm(userA, realmUri))
                {
                    var subscription = await SubscribeToObjectsAsync(realm);

                    // A should be able to update role access level
                    realm.Write(() =>
                    {
                        var readerPermission       = Permission.Get <ObjectWithPermissions>("reader", realm);
                        readerPermission.CanUpdate = true;
                        readerPermission.CanCreate = true;
                    });

                    await WaitForSyncAsync(realm);
                }

                using (var realm = GetRealm(userC, realmUri))
                {
                    // C should now be able to create objects
                    // Why does my subscription timeout?
                    // var subscription = await SubscribeToObjectsAsync(realm);

                    await WaitForSyncAsync(realm);
                    AssertRealmPrivileges(realm, RealmPrivileges.Read | RealmPrivileges.Update | RealmPrivileges.ModifySchema | RealmPrivileges.SetPermissions);
                    AssertClassPrivileges(realm, ClassPrivileges.Read | ClassPrivileges.Subscribe | ClassPrivileges.Update | ClassPrivileges.Create);
                    AssertObjectPrivileges(realm, ObjectPrivileges.Read | ObjectPrivileges.Update | ObjectPrivileges.Delete | ObjectPrivileges.SetPermissions);

                    var objects = realm.All <ObjectWithPermissions>();
                    Assert.That(objects.Count(), Is.EqualTo(3));

                    AddObjectsToRealm(realm, new[] { 4, 5, 6 });

                    Assert.That(objects.Count(), Is.EqualTo(6));
                    await WaitForSyncAsync(realm);
                    Assert.That(objects.Count(), Is.EqualTo(6));
                }
            });
        }
Exemple #29
0
 static void Main(string[] args)
 {
     AsyncContext.Run(() => MainAsync(args));
 }
 public static BuildingTypeBussines Get(Guid guid) => AsyncContext.Run(() => GetAsync(guid));
Exemple #31
0
 public static SmsPanelsBussines Get(Guid guid) => AsyncContext.Run(() => GetAsync(guid));
 static void Main(string[] args)
 {
     //Program.EvaluateRandomExpressions();
     AsyncContext.Run(
         () => Program.MainAsync(args));
 }
Exemple #33
0
 public static UserBussines Get(Guid guid) => AsyncContext.Run(() => GetAsync(guid));
Exemple #34
0
 static void Main(string[] args)
 // A main function to enter the Async main method
 {
     AsyncContext.Run(() => MainA());
 }
Exemple #35
0
 public static string[] GetAllRolles(string userName) => AsyncContext.Run(() => GetAllRollesAsync(userName));
        /// <summary>
        /// Creates a request and invokes it
        /// </summary>
        /// <returns></returns>
        /// <exception cref="MwsException">Exceptions from invoking the request</exception>
        public IMwsReader invoke()
        {
            string         responseBody;
            string         message;
            HttpStatusCode statusCode = default(HttpStatusCode);

            /* Add required request parameters */
            AddRequiredParameters();
            string queryString = GetParametersAsString(parameters);
            int    retries     = 0;

            do
            {
                /* Submit the request and read response body */
                try
                {
                    request = connection.GetHttpClient(serviceEndPoint.URI);
                    byte[] requestData = new UTF8Encoding().GetBytes(queryString);
                    //request.ContentLength = requestData.Length;
                    using (Stream requestStream = request.GetRequestStreamAsync().Result)
                    {
                        requestStream.Write(requestData, 0, requestData.Length);
                    }
                    using (HttpWebResponse httpResponse = AsyncContext.Run(request.GetResponseAsync) as HttpWebResponse)
                    {
                        statusCode             = httpResponse.StatusCode;
                        message                = httpResponse.StatusDescription;
                        ResponseHeaderMetadata = GetResponseHeaderMetadata(httpResponse);
                        StreamReader reader = new StreamReader(httpResponse.GetResponseStream(), Encoding.UTF8);
                        responseBody = reader.ReadToEnd();
                    }
                    if (statusCode == HttpStatusCode.OK)
                    {
                        return(new MwsXmlReader(responseBody));
                    }
                    MwsException e = new MwsException((int)statusCode, message, null, null, responseBody, ResponseHeaderMetadata);

                    if (statusCode == HttpStatusCode.InternalServerError)
                    {
                        if (PauseIfRetryNeeded(retries++))
                        {
                            continue;
                        }
                    }
                    throw e;
                }
                /* Web exception is thrown on unsuccessful responses */
                catch (WebException we)
                {
                    using (HttpWebResponse httpErrorResponse = (HttpWebResponse)we.Response as HttpWebResponse)
                    {
                        if (httpErrorResponse == null)
                        {
                            throw new MwsException(we);
                        }
                        statusCode = httpErrorResponse.StatusCode;
                        using (StreamReader reader = new StreamReader(httpErrorResponse.GetResponseStream(), Encoding.UTF8))
                        {
                            responseBody = reader.ReadToEnd();
                        }
                    }
                    //retry logic
                    if (PauseIfRetryNeeded(retries++))
                    {
                        continue;
                    }
                    throw new MwsException((int)statusCode, null, null, null, responseBody, null);
                }

                /* Catch other exceptions, attempt to convert to formatted exception,
                 * else rethrow wrapped exception */
                catch (Exception e)
                {
                    throw new MwsException(e);
                }
            } while (true);
        }
Exemple #37
0
        public void Session_ProgressObservable_UnitTests(ProgressDirection direction, ProgressMode mode)
        {
            AsyncContext.Run(async() =>
            {
                var callbacksInvoked = 0;
                var completionTCS    = new TaskCompletionSource <ulong>();

                var realm   = await SyncTestHelpers.GetFakeRealm(isUserAdmin: true);
                var session = realm.GetSession();

                session.SimulateProgress(0, 100, 0, 100);

                var observable = session.GetProgressObservable(direction, mode);
                var token      = observable.Subscribe(p =>
                {
                    try
                    {
                        callbacksInvoked++;

                        Assert.That(p.TransferredBytes, Is.LessThanOrEqualTo(p.TransferableBytes));

                        if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                        {
                            Assert.That(p.TransferableBytes, Is.EqualTo(100));
                        }
                    }
                    catch (Exception e)
                    {
                        completionTCS.TrySetException(e);
                    }

                    if (p.TransferredBytes == p.TransferableBytes)
                    {
                        completionTCS.TrySetResult(p.TransferredBytes);
                    }
                });

                session.SimulateProgress(50, 150, 50, 150);
                await Task.Delay(50);

                session.SimulateProgress(100, 200, 100, 200);
                await Task.Delay(50);

                session.SimulateProgress(150, 200, 150, 200);
                await Task.Delay(50);

                session.SimulateProgress(200, 200, 200, 200);
                await Task.Delay(50);

                var totalTransferred = await completionTCS.Task;

                if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                {
                    Assert.That(totalTransferred, Is.EqualTo(100));
                    Assert.That(callbacksInvoked, Is.EqualTo(3));
                }
                else
                {
                    Assert.That(totalTransferred, Is.EqualTo(200));
                    Assert.That(callbacksInvoked, Is.EqualTo(5));
                }

                token.Dispose();
                realm.Dispose();
                Realm.DeleteRealm(realm.Config);
            });
        }
        static void Main(string[] args)
        {
            LocationService ls = new LocationService();

            AsyncContext.Run(() => ls.MainAsync(args));
        }
 public string Region() => AsyncContext.Run(() => SetDivarRegionAsync(bu));
Exemple #40
0
        private void InitializeStrongTimer()
        {
            if (Interval < 60 && Interval != 0)
            {
                ConsoleHelper.WriteError($"指定的时间周期必须大于或等于 60 秒,用户指定的值:{Interval}");
                Environment.Exit(-1);
            }

            var intervalSec = (int)TimeSpan.FromSeconds(Interval).TotalMilliseconds;

            _strongTimer = new StrongTimer
            {
                Period     = intervalSec == 0 ? 5000 : intervalSec,
                RunOnStart = true
            };

            _strongTimer.Elapsed += (sender, args) =>
            {
                AsyncContext.Run(async() =>
                {
                    var records = (await _apiRequestTool.GetRecordsWithMainDomainAsync(ConfigurationHelper.Configuration.MainDomain))
                                  .SelectTokens($"$.DomainRecords.Record[*]")
                                  .Select(x => new AliCloudRecordModel
                    {
                        RecordId = x.SelectToken("$.RecordId")?.Value <string>(),
                        SubName  = x.SelectToken("$.RR")?.Value <string>(),
                        Value    = x.SelectToken("$.Value")?.Value <string>()
                    })
                                  .ToList();

                    var currentPubicIp = (await NetworkHelper.GetPublicNetworkIp()).Replace("\n", "");

                    foreach (var subDomain in ConfigurationHelper.Configuration.SubDomains)
                    {
                        var record = records.FirstOrDefault(x => x.SubName == subDomain.SubDomain);
                        if (record == null)
                        {
                            continue;
                        }
                        if (record.Value == currentPubicIp)
                        {
                            continue;
                        }

                        // 更新指定的子域名 IP。
                        var result = (await _apiRequestTool.UpdateRecordAsync(record.RecordId, currentPubicIp, subDomain)).SelectToken("$.RecordId").Value <string>();
                        if (result == null || result != record.RecordId)
                        {
                            ConsoleHelper.WriteError($"记录 {record.SubName} 更新失败...");
                        }
                    }
                });
            };

            _strongTimer.Start();
            ConsoleHelper.WriteMessage("程序已经开始运行...");

            if (Interval == 0)
            {
                _strongTimer.Stop();
                ConsoleHelper.WriteMessage("程序执行完成...");
                Environment.Exit(0);
            }
        }
Exemple #41
0
 public static TResult RunSync <TResult>(Func <Task <TResult> > func)
 {
     return(AsyncContext.Run(func));
 }
Exemple #42
0
 public void TestWithSyncContext()
 {
     AsyncContext.Run(Run);
 }
Exemple #43
0
 public void Start()
 {
     AsyncContext.Run(() => StartAsync());
 }
Exemple #44
0
        public void Session_ProgressObservable_UnitTests(ProgressDirection direction, ProgressMode mode)
        {
            AsyncContext.Run(async() =>
            {
                var callbacksInvoked = 0;
                var completionTCS    = new TaskCompletionSource <ulong>();

                var config  = await SyncTestHelpers.GetFakeConfigAsync();
                var realm   = GetRealm(config);
                var session = GetSession(realm);

                session.SimulateProgress(0, 100, 0, 100);

                var observable = session.GetProgressObservable(direction, mode);
                var token      = observable.Subscribe(p =>
                {
                    try
                    {
                        callbacksInvoked++;

                        // .NET Core dislikes asserts in the callback so much it crashes.
                        if (p.TransferredBytes > p.TransferableBytes)
                        {
                            throw new Exception("TransferredBytes must be less than or equal to TransferableBytes");
                        }

                        if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                        {
                            if (p.TransferableBytes != 100)
                            {
                                throw new Exception("TransferableBytes must be equal to 100");
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        completionTCS.TrySetException(e);
                    }

                    if (p.TransferredBytes == p.TransferableBytes)
                    {
                        completionTCS.TrySetResult(p.TransferredBytes);
                    }
                });

                using (token)
                {
                    session.SimulateProgress(50, 150, 50, 150);
                    await Task.Delay(50);

                    session.SimulateProgress(100, 200, 100, 200);
                    await Task.Delay(50);

                    session.SimulateProgress(150, 200, 150, 200);
                    await Task.Delay(50);

                    session.SimulateProgress(200, 200, 200, 200);
                    await Task.Delay(50);

                    var totalTransferred = await completionTCS.Task;

                    if (mode == ProgressMode.ForCurrentlyOutstandingWork)
                    {
                        Assert.That(totalTransferred, Is.EqualTo(100));
                        Assert.That(callbacksInvoked, Is.EqualTo(3));
                    }
                    else
                    {
                        Assert.That(totalTransferred, Is.EqualTo(200));
                        Assert.That(callbacksInvoked, Is.EqualTo(5));
                    }
                }
            });
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncContextSynchronizationContext"/> class.
 /// </summary>
 /// <param name="context">The async context.</param>
 public AsyncContextSynchronizationContext(AsyncContext context) {
     _context = context;
 }
        public void ChangeEncodingType()
        {
            AsyncContext.Run(async() =>
            {
                var imgCaptureHandler = new ImageStreamCaptureHandler("/home/pi/images/tests", "jpg");

                TestHelper.CleanDirectory("/home/pi/images/tests");

                using (var imgEncoder = new MMALImageEncoder(imgCaptureHandler))
                {
                    fixture.MMALCamera.ConfigureCameraSettings();

                    imgEncoder.ConfigureOutputPort(0, MMALEncoding.JPEG, MMALEncoding.I420, 90);

                    //Create our component pipeline.
                    fixture.MMALCamera.Camera.StillPort
                    .ConnectTo(imgEncoder);
                    fixture.MMALCamera.Camera.PreviewPort
                    .ConnectTo(new MMALNullSinkComponent());

                    //Camera warm up time
                    await Task.Delay(2000);

                    await fixture.MMALCamera.BeginProcessing(fixture.MMALCamera.Camera.StillPort);
                }

                if (System.IO.File.Exists(imgCaptureHandler.GetFilepath()))
                {
                    var length = new System.IO.FileInfo(imgCaptureHandler.GetFilepath()).Length;
                    Assert.True(length > 0);
                }
                else
                {
                    Assert.True(false, $"File {imgCaptureHandler.GetFilepath()} was not created");
                }

                imgCaptureHandler = new ImageStreamCaptureHandler("/home/pi/images/tests", "bmp");

                using (var imgEncoder = new MMALImageEncoder(imgCaptureHandler))
                {
                    imgEncoder.ConfigureOutputPort(0, MMALEncoding.BMP, MMALEncoding.I420, 90);

                    //Create our component pipeline.
                    fixture.MMALCamera.Camera.StillPort
                    .ConnectTo(imgEncoder);
                    fixture.MMALCamera.Camera.PreviewPort
                    .ConnectTo(new MMALNullSinkComponent());

                    //Camera warm up time
                    await Task.Delay(2000);

                    await fixture.MMALCamera.BeginProcessing(fixture.MMALCamera.Camera.StillPort);
                }

                if (System.IO.File.Exists(imgCaptureHandler.GetFilepath()))
                {
                    var length = new System.IO.FileInfo(imgCaptureHandler.GetFilepath()).Length;
                    Assert.True(length > 0);
                }
                else
                {
                    Assert.True(false, $"File {imgCaptureHandler.GetFilepath()} was not created");
                }
            });
        }
        public void SynchronizationContextCurrent_FromAsyncContext_IsAsyncContextSynchronizationContext()
        {
            SynchronizationContext observedContext = null;
            var context = new AsyncContext();
            context.Factory.Run(() =>
            {
                observedContext = SynchronizationContext.Current;
            });

            context.Execute();

            Assert.AreSame(context.SynchronizationContext, observedContext);
        }
Exemple #48
0
 /// <summary>
 /// 执行
 /// </summary>
 /// <param name="action">操作,范例:Async.Run( async () => await SendAsync() );</param>
 public static void Run(Action action)
 {
     AsyncContext.Run(action);
 }
        public void Task_AfterExecute_NeverRuns()
        {
            int value = 0;
            var context = new AsyncContext();
            context.Factory.Run(() => { value = 1; });
            context.Execute();

            var task = context.Factory.Run(() => { value = 2; });

            task.ContinueWith(_ => { Assert.Fail(); });
            Assert.AreEqual(1, value);
        }
Exemple #50
0
 /// <summary>
 /// 执行
 /// </summary>
 /// <typeparam name="TResult">返回类型</typeparam>
 /// <param name="action">操作,范例:Async.Run( async () => await SendAsync() );</param>
 public static TResult Run <TResult>(Func <Task <TResult> > action)
 {
     return(AsyncContext.Run(action));
 }
        public void Current_FromAsyncContext_IsAsyncContext()
        {
            AsyncContext observedContext = null;
            var context = new AsyncContext();
            context.Factory.Run(() =>
            {
                observedContext = AsyncContext.Current;
            });

            context.Execute();

            Assert.AreSame(context, observedContext);
        }
Exemple #52
0
 public void BulkInsertDataFromIBulkActionDataReaderIntoMdbSynchronouslyWithoutDeadLock() =>
 AsyncContext.Run(() => BulkInsertDataFromIBulkActionDataReaderIntoMdbCore());