Почему бы вам просто не сохранить куда-нибудь HttpContext
, чтобы он был доступен из метода stream_NewFrame
?Я бы предложил использовать переменную-член в вашем классе.
Если вы хотите инкапсулировать это больше, создайте отдельный класс, в который вы вводите HttpContext
, и поместите метод stream_NewFrame
вэтот класс вместо.Что-то вроде:
class Processor
private HttpContext _context;
public Processor(HttpContext context) {
_context = context;
}
public void stream_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Image img = eventArgs.Frame;
byte[] b = GetImageBytes(eventArgs.Frame);
HttpContext.Current.Response.OutputStream.Write(b, 0, b.Length);
}
}
и затем в вашем ProcessRequest
вы делаете так:
открытый класс ImageHandler: IHttpHandler, IRequiresSessionState {
public void ProcessRequest(HttpContext context)
{
//Get parameter
string Url = context.Request.QueryString["url"];
string Username = context.Request.QueryString["username"];
string Password = context.Request.QueryString["password"];
//Set cache
HttpResponse Response = HttpContext.Current.Response;
Response.Expires = 0;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "multipart/x-mixed-replace";
// create processor
Processor p = new Processor(context);
// create MJPEG video source
MJPEGStream stream = new MJPEGStream(string.Format("{0}/video.cgi?user={1}&pwd={2}", Url, Username, Password));
stream.NewFrame += new NewFrameEventHandler(p.stream_NewFrame);
stream.Start();
}