Main thread:
1 Private voidGetpolicy_load (Objectsender, EventArgs e)2 {3 ////threadpool.queueuserworkitem (New WaitCallback (THREADSP));4 Try5 {6MessageBox.Show ("Start"); 7manualresetevent[] _manualevents =Newmanualresetevent[2];8_manualevents[0] =NewManualResetEvent (false);9_manualevents[1] =NewManualResetEvent (false);TenThreadPool.QueueUserWorkItem (NewWaitCallback (ThreadSP2), _manualevents[0]); - - foreach(varVinch_manualevents) the { - V.waitone (); - } - //after the thread finishes executing the following main thread code +MessageBox.Show ("it's over."); - } + Catch(Exception ex) A { at - } -}
ThreadSP2 Method:
//xintianyou Access Policy (Method 2) Private voidThreadSP2 (Objectobj) { ////Processing Methods //String sql = "Select Id,start,end from TB"; //DataTable dt = SqlHelper.ExecuteDataset ("Connection string", System.Data.CommandType.Text, SQL, NULL). Tables[0]; //list<string> List; //for (int i = 0; i < dt. Rows.Count; i++)//{ //list = new list<string> (); //list. ADD (dt. rows[i]["Start"] + ";" + dt. rows[i]["End"] + ";" + dt. rows[i]["id"]); //GJShopping2 S1 = new GJShopping2 (); //ThreadPool.QueueUserWorkItem (New WaitCallback (S1. getshopping), list); //Thread.Sleep (1500); //}MessageBox.Show ("ThreadSP2 method executed"); ManualResetEvent e=(ManualResetEvent) obj; E.set (); }
Multithreaded Operations (ThreadPool.QueueUserWorkItem