您的位置:首页 > 其它

异步回调 主线程等待子线程结束

2012-02-14 12:43 344 查看
static TimeSpan waitTime = new TimeSpan(0, 0, 5);

static WaitHandle[] waitHandles = new WaitHandle[]

{

new AutoResetEvent(false)

//new AutoResetEvent(false)

};

Thread th;

private void button1_Click(object sender, EventArgs e)

{

//DateTime dt = DateTime.Now;

ThreadPool.QueueUserWorkItem(new WaitCallback(DoTask), waitHandles[0]);

WaitHandle.WaitAll(waitHandles);

// dt = DateTime.Now;

ThreadPool.QueueUserWorkItem(new WaitCallback(DoTask), waitHandles[0]);

int index = WaitHandle.WaitAny(waitHandles);

}

static void DoTask(Object state)

{

AutoResetEvent are = (AutoResetEvent)state;

Thread.Sleep(5000);

//int time = 1000 * r.Next(2, 10);

// Console.WriteLine("Performing a task for {0} milliseconds.", time);

// Thread.Sleep(time);

are.Set();

}

static void Work()

{

Thread.Sleep(waitTime);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: