当前位置:编程学习 > C#/ASP.NET >>

请教.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,没必要自己做队列,除非对顺序有要求。 --------------------编程问答--------------------
引用 4 楼 sbwwkmyd 的回复:
既然是前后台通讯,直接异步Socket,没必要自己做队列,除非对顺序有要求。


忘说了,就是要求按顺序存的。。。 --------------------编程问答--------------------
引用 5 楼 thisishexiao 的回复:
忘说了,就是要求按顺序存的。。。

添加一个时间属性,能满足要求吗?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,