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 {//쓰레드가 중단되었습니다. 같은 무시할 수 있는 오류를 깔끔히 처리하기 위해서 비워둠 } }
private void TextureEditor_FormClosed(object sender, FormClosedEventArgs e) { TexturesListBox.Items.Clear(); MagFilterComboBox.Items.Clear(); MinFilterComboBox.Items.Clear(); FileTextBox.Clear(); }
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); } } } }