Exemplo n.º 1
0
        // получение сообщений
        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;
                }
            }
        }