110,534
社区成员
发帖
与我相关
我的任务
分享
dowork1(){}
dowork2(){}
dowork3(){}
//这样运行会卡死
do1()
{
dowork1();
// 做其他事
dowork2();
// 做其他事
dowork3();
}
//这样不能按顺序执行
do1()
{
Thread t1 = new Thread(new ThreadStart(dowork1));
t1.Start();
// 做其他事
Thread t2 = new Thread(new ThreadStart(dowork2));
t2.Start();
// 做其他事
Thread t3 = new Thread(new ThreadStart(dowork3));
t3.Start();
}
用线程调用 : Dele()
private delegate void DelegateMain();
public void Dele()
{
DelegateMain caller = new DelegateMain(Body);
IAsyncResult result = caller.BeginInvoke(new AsyncCallback(CallBackResult), null);
Thread.Sleep(0);
}
private void Body()
{
这里处理程序,数据。不要与UI互动
}
private void CallBackResult(IAsyncResult ar)
{
AsyncResult result = (AsyncResult)ar;
DelegateMain caller = (DelegateMain)result.AsyncDelegate;
caller.EndInvoke(ar);
Invoke((MethodInvoker)delegate
{
//这里是处理与UI的。及返回结果。
再开始同样的调用 线程2.
});
}
//这样不能按顺序执行do1(){Thread t1 = new Thread(new ThreadStart(dowork1));t1.Start();// 做其他事Thread t2 = new Thread(new ThreadStart(dowork2));t2.Start();// 做其他事Thread t3 = new Thread(new ThreadStart(dowork3));t3.Start();}
你可以等t1的操作执行到最后 再去把t2 Start,以此类推