스레드 노트

15772 단어 라인
        private void button1_Click( object sender, EventArgs e)
        {
            CountTime();
        }
         //
         void CountTime()
        {
             for ( int i = 0; i < 999999999; i ++)
            {
            }
            MessageBox.Show( " !");
        }
         // UI
         private void button2_Click( object sender, EventArgs e)
        {
             //
            Thread threadFirst = new Thread(CountTime);
            threadFirst.Start();
        }
、     4 :
    1
    2 System.Threading
    3 Thread , ( , )
    4 Thread Start , CPU , CPU
 
    
    
     : ,
// UI
private void button2_Click( object sender, EventArgs e)
{
//
Thread threadFirst = new Thread(CountTime);
//
threadFirst.IsBackground = true;
threadFirst.Start();
}
 
         : “textBox1” 。

//현재 창을 닫고 쓸데없는 크로스 라인 접근 수정 텍스트 상자 컨트롤에 대한 검사
            TextBox.CheckForIllegalCrossThreadCalls = false;
          void ChangeTxt()
        {
             lock ( this)
            {
                 for ( int i = 0; i < 1000; i ++)
                {
                     int a = int.Parse(textBox1.Text);
                    a ++;
                    textBox1.Text = a.ToString();
                }
            }
        }

         //
         private void button3_Click( object sender, EventArgs e)
        {
            Thread thread = new Thread(ChangeTxt);
            thread.IsBackground = true;
            thread.Start();
            Thread thread2 = new Thread(ChangeTxt);
            thread.IsBackground = true;
            thread2.Start();
        }
lock CPU

 
5 Thread류의 중요한 멤버들.
Start() 부팅 스레드
Abort() 종료 스레드
    Thread.Sleep(1) 정적 방법으로 현재 스레드를 일정 시간 정지시킬 수 있습니다
Name 스레드 이름
    Thread.현재 스레드 참조를 얻으려면 CurrentThread를 사용하십시오.
 
6 아날로그 라인 내부 구조
//  
public class MyThread
{
     //------------ ------------
    ThreadStart threads; //
     public MyThread(ThreadStart ts) // new
    {
         this.threads = ts; //
    }
     public void Start()
    {
        threads(); // ,
    }

     //-------------- ------------
    ParameterizedThreadStart pts; //
     public MyThread(ParameterizedThreadStart pts) // new
    {
         this.pts = pts; //
    }
     public void Start( object o)
    {
        pts(o); // ,
    }
}
//
        MyThread mth = new MyThread(CountTime);
  //
void ShowTxtName( object name)
        {
             if (name != null)
            {
                MessageBox.Show( "name=" + name.ToString());
            }
             else
            {
                MessageBox.Show( "null");
            }
        }

         private void button4_Click( object sender, EventArgs e)
        {
            Thread thread = new Thread(ShowTxtName); // object
            thread.IsBackground = true;
            thread.Start(textBox2.Text); // object public void Start(object parameter);
        }
 
//
         void ShowTxtName2( object li)
        {
            List < string >list =li as List < string >;
             if (list != null)
            {
                 foreach ( string s in list)
                {
                    MessageBox.Show(s);
                }
            }
        }
         private void button5_Click( object sender, EventArgs e)
        {
            Thread thread5 = new Thread(ShowTxtName2);
            thread5.IsBackground = true;
            thread5.Start( new List < string >() { " ", " ", " " });
        }
 
      1     : , 。 , , 。 ,  2     : , , ( ) CPU , , “ ” 。         



좋은 웹페이지 즐겨찾기