AjaxAsyncHttpHandler.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:2k
源码类别:

Ajax

开发平台:

C#

  1. using System;
  2. using System.Reflection;
  3. using System.Web;
  4. using System.Threading;
  5. using System.Web.SessionState;
  6. namespace AjaxPro
  7. {
  8. public delegate void ImDone();
  9. public class AjaxAsyncHttpHandler : IHttpAsyncHandler
  10. {
  11. private IAjaxProcessor p;
  12. private HttpContext ctx = null;
  13. private AsyncCallback acb = null;
  14. private SimpleResult sr = new SimpleResult();
  15. private Thread th = null;
  16. private ImDone mcb = null;
  17. public AjaxAsyncHttpHandler(IAjaxProcessor p) : base()
  18. {
  19. this.p = p;
  20. }
  21. private void OnDone()
  22. {
  23. acb(sr);
  24. }
  25. #region IHttpAsyncHandler Members
  26. public IAsyncResult BeginProcessRequest(HttpContext context, System.AsyncCallback cb, object extraData)
  27. {
  28. ctx = context;
  29. acb = cb;
  30. // Create the delegate to be called when complete
  31. mcb = new ImDone(OnDone);
  32. IntPtr token = System.Security.Principal.WindowsIdentity.GetCurrent().Token;
  33. // Set up the thread object
  34. AjaxProcHelper m = new AjaxProcHelper(p, mcb, token);
  35. th = new Thread(new ThreadStart(m.Run));
  36. th.Start();
  37. return sr;
  38. }
  39. public void EndProcessRequest(IAsyncResult result)
  40. {
  41. int i = 0;
  42. }
  43. #endregion
  44. #region IHttpHandler Members
  45. public void ProcessRequest(HttpContext context)
  46. {
  47. // TODO:  Add AjaxAsyncHttpHandler.ProcessRequest implementation
  48. }
  49. public bool IsReusable
  50. {
  51. get
  52. {
  53. // TODO:  Add AjaxAsyncHttpHandler.IsReusable getter implementation
  54. return false;
  55. }
  56. }
  57. #endregion
  58. }
  59. public class AjaxAsyncHttpHandlerSession : AjaxAsyncHttpHandler, IRequiresSessionState
  60. {
  61. public AjaxAsyncHttpHandlerSession(IAjaxProcessor p) : base(p) { }
  62. }
  63. public class AjaxAsyncHttpHandlerSessionReadOnly : AjaxAsyncHttpHandler, IReadOnlySessionState
  64. {
  65. public AjaxAsyncHttpHandlerSessionReadOnly(IAjaxProcessor p) : base(p) { }
  66. }
  67. }