Opc.Ua.Com.Server.ComDaGroup.Refresh C# (CSharp) 메소드

Refresh() 개인적인 메소드

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.
리턴 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