目前实现了一部分。感觉有问题,有大神指点指点么
[Serializable]
public class Test
{
public string id { get; set; }
public string name { get; set; }
public List<Temp> Temps { get; set; }
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始监听消息");
ThreadPool.SetMaxThreads(10, 10);
IMsgQueue<Test> msg = MsgQueueManager.CreateService<Test>("paiban", ReadMode.Gradually);
msg.ReceiveCompleted = (model, body) =>
{
//开始处理业务
// Console.WriteLine("消息内容" + body.ToString());
ThreadPool.QueueUserWorkItem(WorkFlow,body);
int remainwork; int remainio;
ThreadPool.GetAvailableThreads(out remainwork, out remainio);
if (remainwork < 10)
{
msg.Start();
}
//业务处理完成后重新开始监听
};
msg.Start();
Console.ReadKey();
}
static void WorkFlow(object body)
{
Console.Write(body);
Thread.Sleep(20000);
}
}
2 个解决方案
#1
这里业务处理后需要一个回调函数来通知业务处理结束。好判断是否开启监听继续读取消息。该怎么实现呢
#2
目前实现的部分代码完全不对。有人指点指点么,该怎么获取子线程处理完成并释放的通知呢。
#1
这里业务处理后需要一个回调函数来通知业务处理结束。好判断是否开启监听继续读取消息。该怎么实现呢
#2
目前实现的部分代码完全不对。有人指点指点么,该怎么获取子线程处理完成并释放的通知呢。