public MainWindow()
        {
            InitializeComponent();

            Directory.CreateDirectory(Settings.DOWNLOAD_DIRECTORY);
            Closing += ClosingHandler;

            //            mainState = MainState.Idle;
            downloadState = DownloadState.IDLE;

            model = new Model();
            model.UpdateHostsEvent += HostListBoxUpdateHandler;
            model.UpdateSearchResultEvent += ResultListBoxUpdateHandler;

            RemoteSearch.LocalFindFiles                 += model.FindFiles;
            RemoteSearch.LocalFindFiles                 += LocalFindFiles;
            RemoteStopFinding.StopFindingFunction       += model.StopFinding;
            RemoteAddResult.LocalAddResult              += model.AddResultByRemote;
            RemoteHostProvider.GetHostsFunction         += model.GetHosts;
            RemoteHostProvider.SetActualHostsFunction   += model.SetActualHosts;
            RemoteSearchResolve.SearchResolveFunction   += model.SearchResolve;

            RemoteClearResults.ClearResultsFunction     += ClearResults;

            model.Unique = long.Parse(Settings.LOCAL_IP.ToString().Replace(".", ""));

            udpService = new UdpService(Settings.BROADCAST_IP, Settings.UDP_PORT, Settings.UDP_BROADCAST_DELAY);
            udpService.NewConnectionEvent += model.AddHost;
            udpService.Start();

            remotingServer = new RemotingServer(Settings.REMOTING_SERVER_PORT);
            remotingServer.Start();

            FindButton.Click += ClickHandler;
            DownloadButton.Click += DownloadButtonClickHandler;
            ResultListBox.SelectionChanged += ShowFileInfo;
        }
        private void ClosingHandler(object o, CancelEventArgs e)
        {
            udpService.Stop();
            udpService = null;

            model.Close();
        }