日期:2014-05-18  浏览次数:20456 次

ASP.NET多线程异步的问题。
我在项目中有一个需求,就是:获取MSN的联系人列表。我采用的是MSNPSHARP来做的。这个库里面的所有操作都是使用事件机制来进行异步操作的。

比如:登录之后,使用之前注册的事件来通知是否登录成功。如果登录成功了,当然就可以开始获取联系人列表了。

问题是:现在在ASP.NET中,这种模式直接导致我一个请求完成了,但是之前注册的事件还没有被回调。

我使用AutoResetEvent方式,来让主线程等待,在回调的事件中来设置AutoResetEvent进行同步,
但是,主线程在WaitOne(等待)之后,整个程序就假死了,而注册的回调事件则永远不被调用。

我现在想这样:发送了登录请求之后,一直等待,知道注册的回调事件被调用后,在响应客户端的请求。

该怎么做呢?

------解决方案--------------------
还有种办法是在主线程里面写个定时器,通过定时器去读取状态,他的状态信息,应该能读到吧。
------解决方案--------------------
你可以去研究下asp.net的异步页,看看能否实现
http://www.microsoft.com/china/msdn/library/webservices/asp.net/issuesWickedCodetoc.mspx?mfr=true