WinForm 프로 세 스,스 레 드 및 차이 점 에 대한 깊이 있 는 분석

프로 세 스
프로 세 스 는 데이터 집합 에 대한 독립 적 인 기능 을 가 진 프로그램 입 니 다.
이 는 시스템 자원 을 신청 하고 소유 할 수 있 으 며 동태 적 인 개념 으로 활동 의 실체 이다.
프로 세 스 를 조작 하 는 데 사용 되 는 process 클래스 입 니 다.
네 임 스페이스:System.Diagnostics 를 사용 합 니 다.

Process.Start("calc");   //     
Process.Start("mspaint");   //    
Process.Start("iexplore" , "http://www.baidu.com");  //          
(1)프로 세 스 를 통 해 지정 한 파일 을 엽 니 다.
1.프로 세 스 대상 만 들 기

Process p = new Process();
2.StartInfo 대상 을 만 드 는 것 은 디스크 가 있 는 경 로 를 지정 하 는 것 입 니 다.

ProcessStartInfo psi = new ProcessStartInfo(@"C:\user\.....);
3.프로 세 스 지정 및 시작

p.StartInfo = psi; //    
p.Start(); //    
(2)파일 선택 상 자 를 통 해 사용자 가 열 어야 할 프로그램 을 선택 하고 열 수 있 도록 합 니 다.

private void button1_Click(object sender, EventArgs e)
{
//         
openFileDialog1.Filter = "    |*.exe";
//                  
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//     
string path = openFileDialog1.FileName;
//        
Process p = new Process();
//         
ProcessStartInfo psf = new ProcessStartInfo(path);
//          
p.StartInfo = psf;
//    
p.Start();
} 
} 
예:로그아웃

//  path       exe       
string path = Application.StartupPath;
//    exe dll      
string s = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
private void button2_Click(object sender, EventArgs e)
{
//     
//         
//string path = Application.StartupPath;
string path = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
//     
Process p = new Process();
//          
ProcessStartInfo ps = new ProcessStartInfo(path);
//        
p.StartInfo = ps;
//    
p.Start();
//    
this.Close();
} 
예:마우스 드래그 창 구현

private int x;
private int y;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
//      XY  
x = e.X;
y = e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
//          
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
//  =     +     
this.Left = this.Left+(e.X - x);
this.Top = this.Top +(e.Y - y);
}
} 
스 레 드
스 레 드 는 경량급 프로 세 스(Lightweight Process,LWP)라 고도 불 리 며 프로그램 실행 흐름 의 최소 단위 입 니 다.
차이:프로 세 스 는 독립 된 자원 이 있 고 스 레 드 공용 자원 이 있 습 니 다.
Thread 클래스,네 임 스페이스:System.Threading 사용 하기;
프로그램 은 기본적으로 하나의 메 인 스 레 드 만 있 고 복잡 한 처 리 를 하면 가사 상태 가 발생 합 니 다.하나의 스 레 드 가 동시에 한 가지 일 만 할 수 있 기 때 문 입 니 다.
다 중 스 레 드 의 역할:여러 가지 일 을 하 는 동시에 시간 을 절약 하고 배경 에서 프로그램 을 실행 하 며 프로그램의 운행 효율 을 향상 시 키 며 메 인 인터페이스 에 응답 이 없 는 상황 이 나타 나 지 않 습 니 다.
스 레 드 생 성:
새로운 스 레 드 를 열 어 어떤 함 수 를 실행 합 니까?

Thread th = new Thread(            ,        ); 
이 스 레 드 가 준비 되 었 음 을 표시 합 니 다.언제든지 실행 할 수 있 습 니 다.CPU 는 실행 시간 을 결정 합 니 다.
  th.Start();
스 레 드 는 두 가지 로 나 뉜 다.
프론트 스 레 드-모든 프론트 스 레 드 가 닫 혀 있어 야 프로그램 이 종 료 됩 니 다.
백 스테이지 스 레 드-모든 프론트 스 레 드 가 끝나 면 백 스테이지 스 레 드 는 자동 으로 끝 납 니 다.
두 가지 차이 점:응용 프로그램 은 모든 프론트 스 레 드 를 실행 해 야 종료 할 수 있 습 니 다.
백 엔 드 스 레 드 에 대해 서 는 프로그램 이 실행 되 었 는 지 여 부 를 고려 하지 않 고 바로 종료 할 수 있 습 니 다.모든 백 엔 드 스 레 드 는 프로그램 이 종료 할 때 자동 으로 종 료 됩 니 다.
끝나다
th 스 레 드 를 배경 스 레 드 로 설정 합 니 다.

th . IsBackground = true ;
컨트롤 은 주 스 레 드 로 만 들 어 졌 습 니 다.새 스 레 드 는 주 스 레 드 자원 에 접근 하려 고 합 니 다.프로그램 은 기본적으로 크로스 스 레 드 접근 을 허용 하지 않 습 니 다.
크로스 스 레 드 접근 제한 취소
인터페이스 Load 이벤트 에서
  Control.CheckForIllegalCrossThreadCalls = false;
FormClosing 이벤트 중:

 //        null,   null,       
  if(th != null)
  {
    //      ,            Start 
    th.Abort(); 
  }
매개 변수 함수 실행:
스 레 드 실행 방법 에 인자 가 필요 하 다 면 이 매개 변 수 는 object 형식 이 어야 합 니 다!

Thread th = new Thread(Test); //         
  th . IsBackground = true;
  th.Start("123");         //     Test        
이렇게 함수 에서 강 한 회전 이 필요 합 니 다:

 private void Test (object s)
  {
    string ss = (string) s ;
    ......
  }
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 WinForm 프로 세 스,스 레 드 와 차이 점 에 대한 소개 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기