public void Register() { lock (eg_mutex) { if (entry_group != null) { entry_group.Reset(); } else { entry_group = new AV.EntryGroup(client); entry_group.StateChanged += OnEntryGroupStateChanged; } try { string [] rendered_txt_record = null; if (txt_record != null && txt_record.Count > 0) { rendered_txt_record = new string[txt_record.Count]; for (int i = 0; i < txt_record.Count; i++) { TxtRecordItem item = txt_record.GetItemAt(i); rendered_txt_record[i] = String.Format("{0}={1}", item.Key, item.ValueString); } } entry_group.AddService(name, regtype, reply_domain, (ushort)port, rendered_txt_record); entry_group.Commit(); } catch (AV.ClientException e) { if (e.ErrorCode == AV.ErrorCode.Collision && OnResponse(e.ErrorCode)) { return; } else { throw e; } } } }