请教.Net下异步编程方面的问题。
刚开始转.Net,很多东西都不清楚,苦恼。。。先介绍下目标,简单说就是前台在一段时间内持续生成图片,要实现在后台异步地保存这些图片。
我想的是先创建一个线程作为父线程,里面维持一个队列。每当生成一张图片时就往父线程里添加一个子任务。子任务顺序执行到队列为空后父线程才结束。
麻烦大家说说.Net下实现这些功能用什么类和方法好,谢谢。 --------------------编程问答-------------------- 信号量就可以了。你这个就是典型的P-V(生产者/消费者)问题,信号量为0的时候阻塞保存图片,信号量为某个最大值,阻塞生成图片线程。 --------------------编程问答-------------------- 具体就用ManualResetEvent 就可以,查查msdn它的用法 --------------------编程问答-------------------- Queue<object> YOUR_DATA_POOL=....;
void Main()
{
ManualResetEvent mre=new ManualResetEvent(false);
AutoResetEvent are=new AutoResetEvent(false);
//do your job in main thread here
...
YOUR_DATA_POOL.Enqueue(sth);
StartProcessAsync(mre);
//notify your thread(td) can process
mre.Set();
//wait finish signal
are.WaitOne();
Console.WriteLine("Done and exit");
}
void StartProcessAsync(ManualResetEvent mre)
{
Thread td=new Thread(()=>{
try
{
mre.WaitOne();
//do your async work here
}
finally
{
//notify main thread
are.Set();
}
});
td.Start();
} --------------------编程问答-------------------- 既然是前后台通讯,直接异步Socket,没必要自己做队列,除非对顺序有要求。 --------------------编程问答--------------------
忘说了,就是要求按顺序存的。。。 --------------------编程问答--------------------
添加一个时间属性,能满足要求吗?
补充:.NET技术 , C#