一个关于异步HttpListener的问题

ciwodio 2009-02-15 03:32:13
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using DevSDK.Net.Sockets;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
static HttpListener sSocket = null;

static void Main(string[] args)
{
sSocket = new HttpListener();

sSocket.Prefixes.Add("http://127.0.0.1:8080/");

sSocket.Start();

sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket);

Console.Read();
}

static void GetContextCallBack(IAsyncResult ar)
{
try
{
sSocket = ar.AsyncState as HttpListener;

HttpListenerContext context = sSocket.EndGetContext(ar);

Console.WriteLine(context.Request.Url.PathAndQuery);

// 这里我要进行数据库查询。。新来的连接它怎么处理的?

}
catch { }
sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket);
}
}
}


请问。这个异步HTTPLISTENER实现代码。。。假如进行数据库查询的那个地方。需要很长很长时间。

那么,新进来的连接请求

是被怎么处理的呢?是进行排队?还是异步本身就是一个多线程呢?

如果是排队。请问怎么解决并发的问题?
...全文
251 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeffrySun 2009-02-15
  • 打赏
  • 举报
回复
HttpListener可以处理多并发问题。异步HttpListener只是让当前请求立即返回。

httpLisener对任何一个请求都会另起一个线程来处理。
xhlnb 2009-02-15
  • 打赏
  • 举报
回复
异步编程主要是针对某些耗时的操作、无需和用户交互、只执行一次无需返回结果等的操作。
排队,并发?这里应该不做影响吧,比如,一百人做同一件事情,跟一人做一百件事情是不一样的.后者才会出现你所指的问题吧.
king19840811 2009-02-15
  • 打赏
  • 举报
回复
异步本身就是一个多线程

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧