// получение сообщений void ReceiveMessage() { while (true) { try { EmigrationObject message; int bytes = 0; do { byte[] data = new byte[500000]; bytes = stream.Read(data, 0, data.Length); message = ByteArrayToObject(data) as EmigrationObject; if (message.type == "file") { EmigrationFileInfo efi = (EmigrationFileInfo)message.message; Tabs.Set(() => Tabs.Visibility = Visibility.Hidden); DownloadFile(efi); Tabs.Set(() => Tabs.Visibility = Visibility.Visible); } }while (stream.DataAvailable); switch (message.type) { case "string": break; case "List<EmigrationPathInfo>": List <EmigrationPathInfo> list = (List <EmigrationPathInfo>)message.message; currentFTPpath = list[0].Name; LabelPathFolder.Set(() => LabelPathFolder.Content = currentFTPpath); list.RemoveAt(0); FolderTreeView.Set(() => FolderTreeView.Items.Clear()); FolderTreeView.Set(() => { list.ForEach(a => { TemplateFileElement tfe = new TemplateFileElement(); tfe.isFile = a.isFile; tfe.path = a.Name; tfe.icon = ToImageSource(BytesToIcon(a.ImagePath)); FolderTreeView.Items.Add(tfe); }); }); break; case "DownloadComplete": Tabs.Set(() => Tabs.Visibility = Visibility.Visible); break; } } catch (Exception ex) { Tabs.Set(() => { Tabs.Set(() => Tabs.SelectedIndex = 0); Title = "Client: Disconnect."; this.ShowMessageAsync("Error", ex.Message); }); return; } } }