private void btn_start_Click(object sender, EventArgs e) { //线程更新窗体内容 _thread = new Thread(new ThreadStart(set_txt)); _thread.Start(); //线程传递参数 ParameterizedThreadStart start = new ParameterizedThreadStart(set_txt); Thread thread = new Thread(start); object obj = "From Thread With Pareameter:Hello ParameterizedThreadStart!!! "; thread.Start(obj); Thread thread2 = new Thread(() => set_txt("From Thread With Lambda:Hello Lam!!!")); thread2.Start(); ThreadPool.SetMaxThreads(100, 50); ThreadPool.QueueUserWorkItem(set_txt, "From Thread With ThreadPool:Hello ThreadPool!!!"); //传递BsonDocument BsonDocument doc_input = new BsonDocument(); doc_input.Add("sleep", 700); doc_input.Add("txt", "From BsonDocument!!!"); ParameterizedThreadStart start3 = new ParameterizedThreadStart(set_txt_with_doc); Thread thread3 = new Thread(start3); object obj3 = (object)doc_input; thread3.Start(obj3); //异步调用 D_Add handler = new D_Add(f_add); sb.AppendLine("Start Add!!"); IAsyncResult result = handler.BeginInvoke(1, 2, new AsyncCallback(f_complete), "AsycState:OK"); sb.AppendLine("Start do other work!!"); this.txt_result.Text = sb.ToString(); }
private void f_complete(IAsyncResult result) { D_SetTxt d_set_txt = new D_SetTxt(f_set_txt); D_Add handler = (D_Add)((AsyncResult)result).AsyncDelegate; string str_result = handler.EndInvoke(result).ToString(); string str_state = result.AsyncState.ToString(); this.Invoke(d_set_txt, "Complte Async Result:" + str_result); this.Invoke(d_set_txt, "Complte ASync State:" + str_state); }