Opc.Ua.Com.Server.ComDaGroup.AsyncRead C# (CSharp) Méthode

AsyncRead() public méthode

Starts an asynchronous read operation.
public AsyncRead ( uint maxAge, int transactionId, int serverHandles, int &cancelId ) : int[]
maxAge uint The max age.
transactionId int The transaction id.
serverHandles int The server handles.
cancelId int The cancel id.
Résultat int[]
        public int[] AsyncRead(uint maxAge, int transactionId, int[] serverHandles, out int cancelId)
        {
            TraceState("AsyncRead", maxAge, transactionId, serverHandles.Length);
            ThrowIfDisposed();

            cancelId = 0;

            lock (m_lock)
            {
                int[] results = new int[serverHandles.Length];
                List<ComDaGroupItem> items = new List<ComDaGroupItem>(serverHandles.Length);

                for (int ii = 0; ii < serverHandles.Length; ii++)
                {
                    ComDaGroupItem item = null;

                    if (!m_itemsByHandle.TryGetValue(serverHandles[ii], out item))
                    {
                        results[ii] = ResultIds.E_INVALIDHANDLE;
                        continue;
                    }

                    items.Add(item);
                }

                if (items.Count > 0)
                {
                    ComDaAsnycReadRequest request = new ComDaAsnycReadRequest();

                    request.CancelId = ++m_transactionCounter;
                    request.TransactionId = transactionId;
                    request.MaxAge = maxAge;
                    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);
                }

                return results;
            }
        }