public PnrpRegisterTraceRecord(string meshId, PnrpPeerResolver.PnrpRegistration global, IEnumerable<PnrpPeerResolver.PnrpRegistration> siteEntries, IEnumerable<PnrpPeerResolver.PnrpRegistration> linkEntries)
 {
     this.meshId = meshId;
     this.siteEntries = siteEntries;
     this.linkEntries = linkEntries;
     this.global = global;
 }
                public void SyncEnumeration(object state)
                {
                    PnrpPeerResolver.UnsafePnrpNativeMethods.CriticalLookupHandle handle;
                    int num = 0;
                    PnrpPeerResolver.UnsafePnrpNativeMethods.WsaQuerySetSafe safeQuerySet = PnrpPeerResolver.UnsafePnrpNativeMethods.WsaQuerySet.ToWsaQuerySetSafe(this.resolveQuery);
                    using (safeQuerySet)
                    {
                        num = PnrpPeerResolver.UnsafePnrpNativeMethods.WSALookupServiceBegin(PnrpPeerResolver.UnsafePnrpNativeMethods.CriticalAllocHandleWsaQuerySetSafe.FromWsaQuerySetSafe(safeQuerySet), PnrpPeerResolver.UnsafePnrpNativeMethods.WsaNspControlFlags.ReturnAll, out handle);
                    }
                    if (num != 0)
                    {
                        this.lastException = new PnrpPeerResolver.PnrpException(PnrpPeerResolver.UnsafePnrpNativeMethods.WSAGetLastError(), this.resolveQuery.Context);
                        Utility.CloseInvalidOutCriticalHandle(handle);
                        base.Complete(false, this.lastException);
                    }
                    else
                    {
                        PnrpPeerResolver.UnsafePnrpNativeMethods.WsaQuerySet set = new PnrpPeerResolver.UnsafePnrpNativeMethods.WsaQuerySet();
                        int size = Marshal.SizeOf(typeof(PnrpPeerResolver.UnsafePnrpNativeMethods.WsaQuerySetSafe)) + 400;
                        CriticalAllocHandle handle3 = CriticalAllocHandle.FromSize(size);
                        try
                        {
                            using (handle)
                            {
                            Label_0090:
                                if (this.timeoutHelper.RemainingTime() != TimeSpan.Zero)
                                {
                                    if (PnrpPeerResolver.UnsafePnrpNativeMethods.WSALookupServiceNext(handle, 0, ref size, (IntPtr) handle3) != 0)
                                    {
                                        int errorCode = PnrpPeerResolver.UnsafePnrpNativeMethods.WSAGetLastError();
                                        switch (errorCode)
                                        {
                                            case 0x2776:
                                            case 0x277e:
                                                return;

                                            case 0x271e:
                                                handle3 = CriticalAllocHandle.FromSize(size);
                                                goto Label_0090;
                                        }
                                        PeerExceptionHelper.ThrowPnrpError(errorCode, set.Context);
                                        goto Label_0090;
                                    }
                                    if (handle3 == IntPtr.Zero)
                                    {
                                        goto Label_0090;
                                    }
                                    set = MarshalWsaQuerySetNativeToWsaQuerySet((IntPtr) handle3, this.scopeId);
                                    PnrpPeerResolver.PnrpRegistration item = new PnrpPeerResolver.PnrpRegistration {
                                        CloudName = set.Context,
                                        Comment = set.Comment,
                                        PeerName = set.ServiceInstanceName,
                                        Addresses = new IPEndPoint[set.CsAddrInfos.Length]
                                    };
                                    for (int i = 0; i < set.CsAddrInfos.Length; i++)
                                    {
                                        item.Addresses[i] = set.CsAddrInfos[i].LocalAddr;
                                    }
                                    lock (this.results)
                                    {
                                        this.results.Add(item);
                                        goto Label_0090;
                                    }
                                }
                            }
                        }
                        catch (Exception exception)
                        {
                            if (Fx.IsFatal(exception))
                            {
                                throw;
                            }
                            DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information);
                            if (DiagnosticUtility.ShouldTraceInformation)
                            {
                                PnrpResolveExceptionTraceRecord extendedData = new PnrpResolveExceptionTraceRecord(this.resolveQuery.ServiceInstanceName, this.resolveQuery.Context, exception);
                                if (DiagnosticUtility.ShouldTraceError)
                                {
                                    TraceUtility.TraceEvent(TraceEventType.Error, 0x4004b, System.ServiceModel.SR.GetString("TraceCodePnrpResolveException"), extendedData, this, null);
                                }
                            }
                            this.lastException = exception;
                        }
                        finally
                        {
                            base.Complete(false, this.lastException);
                        }
                    }
                }