首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置IHttpAsyncHandler?

如何设置IHttpAsyncHandler?
EN

Stack Overflow用户
提问于 2011-05-21 06:53:28
回答 1查看 953关注 0票数 2

我正在尝试设置一个异步HttpHandler,但我不知道我是否在正确的轨道上。关于它的文档似乎并不多。我只想得到异步触发DoWork()方法的请求。

有几件事我不太确定:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;



public class WebServiceHandlerAsync : IHttpAsyncHandler
{

    /// <summary>
    /// BeingProcessRequest
    /// </summary>
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
    {
        context.Response.Output.WriteLine("Starting");
        context.Response.Flush();

        // Invokes the BeginProcessRequest method on the asynchronous HTTP handler
        RequestResult result = new RequestResult(context, null, extraData);
        result.DoWork();

        return result;
    }

    /// <summary>
    /// Do on end of request (blocking)
    /// </summary>
    public void EndProcessRequest(IAsyncResult result)
    {

    }


    public bool IsReusable
    {
        get { return true; }
    }


    public void ProcessRequest(HttpContext context)
    {
        throw new NotImplementedException();
    }

}





/// <summary>
/// Async object
/// </summary>
public class RequestResult : IAsyncResult
{
    public HttpContext Context { get; private set; }
    private bool _completed;
    private object _extraData;

    public object AsyncState
    {
        get { return _extraData; }
    }

    public System.Threading.WaitHandle AsyncWaitHandle
    {
        get { throw new NotImplementedException(); }
    }

    public bool CompletedSynchronously
    {
        get { return false; }
    }

    public bool IsCompleted
    {
        get { return _completed; }
    }


    /// <summary>
    /// Constructor
    /// </summary>
    public RequestResult(HttpContext context, AsyncCallback callback, object extraData)
    {
        Context = context;
        _extraData = extraData; 
    }


    /// <summary>
    /// Handle request
    /// </summary>
    public void DoWork()
    {    
        // do some work
        Context.Response.Output.WriteLine("Working...");
        _completed = true;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2011-08-01 00:58:23

去dnrtv http://www.dnrtv.com/default.aspx?showNum=188上看188节目吧

本文将带您了解.NET 4中最先进的异步技术以及下一个.NET版本中即将推出的功能。

您还可以选择在Asynch ctp上执行此操作,该ctp已授权用于商业用途。

这使得异步成为一种可以使用的blast。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6078341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档