internal void InitNetBrowser ()
 {
     _serviceList = new List<NSNetService> ();
     _netBrowser = new NSNetServiceBrowser ();
     
     _source = new ServicesTableSource (this);
     servicesTable.Source = _source;
     
     _netBrowser.SearchForServices ("_bonjourdemoservice._tcp", "");
     
     _netBrowser.FoundService += delegate(object sender, NSNetServiceEventArgs e) {
         logView.AppendTextLine (String.Format ("{0} added", e.Service.Name));
         
         _serviceList.Add (e.Service);
         
         e.Service.AddressResolved += ServiceAddressResolved;
         
         // NOTE: could also insert and remove rows in a
         // more fine grained fashion here as well
         servicesTable.ReloadData ();
     };
     
     _netBrowser.ServiceRemoved += delegate(object sender, NSNetServiceEventArgs e) {
         logView.AppendTextLine (String.Format ("{0} removed", e.Service.Name));
         
         var nsService = _serviceList.Single (s => s.Name.Equals (e.Service.Name));
         _serviceList.Remove (nsService);
         servicesTable.ReloadData ();
     };
 }
        internal void InitNetBrowser()
        {
            _serviceList = new List <NSNetService> ();
            _netBrowser  = new NSNetServiceBrowser();

            _source = new ServicesTableSource(this);
            servicesTable.Source = _source;

            _netBrowser.SearchForServices("_bonjourdemoservice._tcp", "");

            _netBrowser.FoundService += delegate(object sender, NSNetServiceEventArgs e) {
                logView.AppendTextLine(String.Format("{0} added", e.Service.Name));

                _serviceList.Add(e.Service);

                e.Service.AddressResolved += ServiceAddressResolved;

                // NOTE: could also insert and remove rows in a
                // more fine grained fashion here as well
                servicesTable.ReloadData();
            };

            _netBrowser.ServiceRemoved += delegate(object sender, NSNetServiceEventArgs e) {
                logView.AppendTextLine(String.Format("{0} removed", e.Service.Name));

                var nsService = _serviceList.Single(s => s.Name.Equals(e.Service.Name));
                _serviceList.Remove(nsService);
                servicesTable.ReloadData();
            };
        }