예제 #1
0
        /// <summary>This method is called when source DataSet is committed. It may be called
        /// in thread different from UI</summary>
        /// <param name="sender">DataSet that was committed</param>
        /// <param name="args">Information about DataSet changes</param>
        private void OnDataSetCommittedAsync(object sender, DataSetCommittedEventArgs args)
        {
            int activeRequestCount;

            lock (commits)
            {
                commits.Add(args);
                activeRequestCount = activeRequests.Count;
            }
            if (wpfDispatcher.Thread == Thread.CurrentThread) // This event is in UI thread
            {
                Sync();
            }
            else if (!syncEnqueued && activeRequestCount == 0)
            {
                syncEnqueued = true;
                wpfDispatcher.BeginInvoke(Priority, new SyncHandler(
                                              () =>
                {
                    try
                    {
                        if (!isDisposed)
                        {
                            Sync();
                        }
                    }
                    finally
                    {
                        syncEnqueued = false;
                    }
                }
                                              ));
            }
        }
예제 #2
0
        private void OnDataSetCommitted(DataSetCommittedEventArgs e, OnCommittedHandler handler)
        {
            if ((e.Changes.ChangesetSource & ChangesetSource.Remote) == 0)
            {
                return; // we're waiting for remote changes
            }
            var ds = e.DataSet;

            if (FetchClimateRequestBuilder.IsProcessingSuccessful(ds) || FetchClimateRequestBuilder.IsProcessingFailed(ds))
            {
                ds.Committed -= handler.Handler;
                handler.Completed.Set();
            }
        }
예제 #3
0
        private void OnDataSetCommitted(object sender, DataSetCommittedEventArgs e)
        {
            int[] start = new int[] { 0, 0, 0, u.Dimensions[3].Length - 1 };

            double[, , ,] uData = (double[, , , ])u.GetData(start, null);
            double[, , ,] vData = (double[, , , ])v.GetData(start, null);
            double[, , ,] wData = (double[, , , ])w.GetData(start, null);

            SetData(new FuncData3D <Vector3D>((i, j, k) =>
            {
                Vector3D result = new Vector3D(uData[i, j, k, 0], vData[i, j, k, 0], wData[i, j, k, 0]);
                return(result);
            }));

            RaiseChanged();
        }
예제 #4
0
 private void OnDataSetCommitted(object sender, DataSetCommittedEventArgs args)
 {
     base.DeliverEvent(sender, args);
 }
 private void OnDataSetCommitted(object sender, DataSetCommittedEventArgs args)
 {
     base.DeliverEvent(sender, args);
 }