Opc.Ua.Com.Server.ComDaGroup.Refresh C# (CSharp) Method

Refresh() private method

Starts an asynchronous refresh operation.
private Refresh ( uint maxAge, int transactionId, bool isFirstUpdate, int &cancelId ) : void
maxAge uint The max age.
transactionId int The transaction id.
isFirstUpdate bool True if this refresh is the first update after activation.
cancelId int The cancel id.
return void
        private void Refresh(uint maxAge, int transactionId, bool isFirstUpdate, out int cancelId)
        {
            TraceState("Refresh", maxAge);
            ThrowIfDisposed();

            cancelId = 0;

            lock (m_lock)
            {
                // no refresh in inactive groups.
                if (!m_active)
                {
                    throw ComUtils.CreateComException(ResultIds.E_FAIL);
                }

                // collect active items.
                List<ComDaGroupItem> items = new List<ComDaGroupItem>(m_items.Count);

                for (int ii = 0; ii < m_items.Count; ii++)
                {
                    ComDaGroupItem item = m_items[ii];

                    if (item.Active)
                    {
                        items.Add(item);
                    }
                }

                // no refresh if no active items.
                if (items.Count == 0)
                {
                    throw ComUtils.CreateComException(ResultIds.E_FAIL);
                }

                // create the request.
                ComDaAsnycReadRequest request = new ComDaAsnycReadRequest();

                request.CancelId = ++m_transactionCounter;
                request.TransactionId = transactionId;
                request.IsFirstUpdate = isFirstUpdate;
                request.MaxAge = maxAge;
                request.IsRefresh = true;
                request.ServerHandles = new int[items.Count];
                request.ClientHandles = new int[items.Count];

                for (int ii = 0; ii < items.Count; ii++)
                {
                    request.ServerHandles[ii] = items[ii].ServerHandle;
                    request.ClientHandles[ii] = items[ii].ClientHandle;
                }

                m_requests.Add(request);
                cancelId = request.CancelId;

                // create a thread to process the request.
                Thread thread = new Thread(OnAsyncRead);
                thread.IsBackground = true;
                thread.Start(request);
            }
        }

Same methods

ComDaGroup::Refresh ( uint maxAge, int transactionId, int &cancelId ) : void