티스토리 뷰

P rogramming/C # (13.05~)

thread 정리해야 함

Only I Can 2013. 8. 27. 16:27

출처 : http://blog.naver.com/PostView.nhn?blogId=smd39301&logNo=10155844915


using System.Threading;

 

Thread[] T1 = new Thread[100];

 

 private void button1_Click(object sender, EventArgs e)
{ // 쓰레드 100개 생성 : 변수 값 넘겨주기 (Class 생성)
    for (int j = 0; j < 100; j++)
    {
        work wk = new work();
        wk.l_temp = (j*100);
        T1[j] = new Thread(new ThreadStart(wk.ThreadProc));
        T1[j].Priority = ThreadPriority.Highest;
        T1[j].Start();
    }
}

private void button2_Click(object sender, EventArgs e)
{ // 생성된 쓰레드 100개 강제 종료
    for (int j = 0; j < 100; j++)
    {
        T1[j].Abort();
    }
    Application.Exit();
}

class work
{ // 쓰레드 변수값 받기위한 Class

    public long l_temp;

    public void ThreadProc()
    {
        string ConnectStr = "Server=192.168.0.15; database=GAMEDB; user id=admin; password=1111";
        MySqlConnection Con = new MySqlConnection(ConnectStr);
        MySqlCommand Cmd = new MySqlCommand("usp_ndbTest", Con);

        Cmd.CommandType = CommandType.StoredProcedure;

        Cmd.Parameters.Add("in_userno", MySqlDbType.Int32);
        Cmd.Parameters.Add("in_cnt", MySqlDbType.Int32);
        
        for (long i2 = 1; i2 <= 10000; i2++)
        {
            for (long j2 = 1; j2 <= 100; j2++)
            {
                Cmd.Parameters["in_userno"].Value = j2 + l_temp;
                Cmd.Parameters["in_cnt"].Value = 10;
                try
                {
                    Con.Open();
                    Cmd.ExecuteNonQuery();
                    Con.Close();
                    //Thread.Sleep(500); // 쓰레드 잠시 대기 1/1000 초
                }
                catch (Exception ex)
                {
                        try
                        { // DB 실행오류 남김
                            FileStream fs = new FileStream("NDB_error_log.txt", FileMode.Append, FileAccess.Write);
                            StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
                            sw.WriteLine(DateTime.Now.ToString() + " : " + l_temp.ToString() + " >> " + ex.Source + " - " + ex.Message);
                            sw.Flush();
                            sw.Close();
                            fs.Close();
                        }
                        catch
                        {
                            // 파일로그 작성 에러는 무시
                        }
                }
            }
        }
    }


댓글
댓글쓰기 폼