Beispiel #1
0
        private void Send() //Send 버튼을 눌렀을 때 thrsend 쓰레드 안에서 돌아갈 함수
        {
            try
            {
                while (ConnectedToServer)      //서버에 연결되어 있을 때
                {
                    buttonstream.Position = 0; //파일의 인덱스를 맨앞으로 이동시키고

                    FileInfo fi = new FileInfo(openFileDialog.FileName);

                    Fp = new FilePacket();

                    Fp.FileName = fi.Name;                                                         //파일의 경로를 생각한 짧은 경로를 얻어오기위해 FileInfo 사용
                    Fp.FileSize = fi.Length;                                                       //파일의 길이를 FileSize로 입력

                    Invoke(new MethodInvoker(delegate()                                            //Control을 건드리는 부분 --> Invoke 사용
                    {
                        ProgressBar.Minimum = 0;                                                   // 초기값 0
                        ProgressBar.Maximum = (int)(buttonstream.Length / Fp.FileData.Length) + 1; //보내야 하는 횟수
                        ProgressBar.Value   = 0;                                                   // 현재 값 0
                    }
                                             ));
                    for (int i = 0; i < (int)(buttonstream.Length / Fp.FileData.Length) + 1; i++)
                    {                                                          //파일의 크기를 버퍼의 크기로 나누고 나머지부분 전송을 위해 + 1번만큼 더 전송함
                        buttonstream.Read(Fp.FileData, 0, Fp.FileData.Length); //파일을 버퍼에 읽어와서
                        Fp.Type = 0;                                           //보통의 파일 전송 타입
                        Packet.Serialize(Fp).CopyTo(this.SendBuffer, 0);       //SendBuffer로 Serialize
                        NetStream.Write(SendBuffer, 0, SendBuffer.Length);     //네트워크 스트림에 쓴다
                        NetStream.Flush();                                     //보낸다

                        ClearBuffer(SendBuffer);                               //SendBuffer의 모든 index를 0으로 초기화

                        Invoke(new MethodInvoker(delegate()                    //Control을 건드리는 부분
                        {
                            ProgressBar.Value++;                               //Value를 증가시킴(Progressbar 수치 증가)
                        }
                                                 ));
                    }
                    //파일 전송 끝

                    buttonstream.Dispose();
                    buttonstream.Close();               //
                    FileTextBox.Clear();                //파일스트림을 닫아주고, 파일경로 텍스트박스 초기화

                    Invoke(new MethodInvoker(delegate() //컨트롤을 건드리는 부분
                    {
                        ListViewItem item = new ListViewItem(new string[] { fi.Name, fi.Length.ToString() });
                        listView.Items.Add(item);           //전송을 완료하면 서버의 경로에 이 파일도 저장되므로
                    }
                                             ));

                    threader = new Thread(new ThreadStart(Receive)); //Abort되었던 쓰레드를 다시 생성해줌
                    threader.Start();                                //시작
                    thrsender.Abort();                               //전송 쓰레드 Abort
                }
            }
            catch
            {//쓰레드가 중단되었습니다. 같은 무시할 수 있는 오류를 깔끔히 처리하기 위해서 비워둠
            }
        }
Beispiel #2
0
 private void TextureEditor_FormClosed(object sender, FormClosedEventArgs e)
 {
     TexturesListBox.Items.Clear();
     MagFilterComboBox.Items.Clear();
     MinFilterComboBox.Items.Clear();
     FileTextBox.Clear();
 }
Beispiel #3
0
        private void MaterialTabs_SelectedIndexChanged(object sender, EventArgs e)
        {
            #region Disable controls
            NameTextBox.Enabled         = false;
            MagFilterComboBox.Enabled   = false;
            MinFilterComboBox.Enabled   = false;
            EngineCheckBox.Enabled      = false;
            ApplyButton.Enabled         = false;
            FileButton.Enabled          = false;
            FileTextBox.Enabled         = false;
            CubeMapFileButton1.Enabled  = false;
            CubeMapFileTextBox1.Enabled = false;
            CubeMapFileButton2.Enabled  = false;
            CubeMapFileTextBox2.Enabled = false;
            CubeMapFileButton3.Enabled  = false;
            CubeMapFileTextBox3.Enabled = false;
            CubeMapFileButton4.Enabled  = false;
            CubeMapFileTextBox4.Enabled = false;
            CubeMapFileButton5.Enabled  = false;
            CubeMapFileTextBox5.Enabled = false;
            CubeMapFileButton6.Enabled  = false;
            CubeMapFileTextBox6.Enabled = false;

            #endregion
            EngineCheckBox.Checked = false;
            NameTextBox.Clear();
            this.MinimumSize = new System.Drawing.Size(0, 0);
            if (MaterialTabs.SelectedTab == MaterialTabs.TabPages[0])
            {
                this.Size        = new System.Drawing.Size(798, 482);
                this.MinimumSize = new System.Drawing.Size(798, 482);

                TextureFilePanel.Show();
                CubemapTexturePanel.Hide();
                TexturesListBox.Items.Clear();
                MagFilterComboBox.SelectedIndex = -1;
                MinFilterComboBox.SelectedIndex = -1;
                FileTextBox.Clear();
                pictureBox1.Hide();
                foreach (Texture element in Textures.TexturesList)
                {
                    if (element.TextureTarget == Pencil.Gaming.Graphics.TextureTarget.Texture2D)
                    {
                        TexturesListBox.Items.Add(element.Name);
                    }
                }
            }
            if (MaterialTabs.SelectedTab == MaterialTabs.TabPages[1])
            {
                this.Size        = new System.Drawing.Size(798, 604);
                this.MinimumSize = new System.Drawing.Size(798, 604);

                TexturesListIndexCounter = TexturesListBox.Items.Count;
                TextureFilePanel.Hide();
                CubemapTexturePanel.Show();
                TexturesListBox.Items.Clear();
                MagFilterComboBox.SelectedIndex = -1;
                MinFilterComboBox.SelectedIndex = -1;
                FileTextBox.Clear();
                pictureBox1.Hide();
                foreach (Texture element in Textures.TexturesList)
                {
                    if (element.TextureTarget == Pencil.Gaming.Graphics.TextureTarget.TextureCubeMap)
                    {
                        TexturesListBox.Items.Add(element.Name);
                    }
                }
            }
        }