小编Xaq*_*ron的帖子

为什么Thread.Sleep()是如此CPU密集型?

我有一个带有这个pseduo代码的ASP.NET页面:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
}
Run Code Online (Sandbox Code Playgroud)

请求此页面的任何客户端都将开始下载二进制文件.此时一切正常,但客户端的下载速度没有限制,因此将上述代码更改为:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
   Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

速度问题现在已经解决,但是在测试中有100个并发客户端一个接一个地连接(每个新连接之间延迟3秒),当客户端数量增加时CPU使用率增加,并且当70到80个并发客户端CPU达到100%时CPU使用率增加并且任何新连接都被拒绝.其他机器上的数字可能不同,但问题是为什么Thread.Sleep()是如此CPU密集型,有没有办法加速客户端没有CPU上升?

我可以在IIS级别执行此操作,但我需要从应用程序内部进行更多控制.

c# asp.net performance multithreading

11
推荐指数
2
解决办法
2万
查看次数

绑定IP地址只是第一次使用

我想从服务器上的一个可用IP地址发出Web请求,所以我使用这个类:

public class UseIP
{
    public string IP { get; private set; }

    public UseIP(string IP)
    {
        this.IP = IP;
    }

    public HttpWebRequest CreateWebRequest(Uri uri)
    {
        ServicePoint servicePoint = ServicePointManager.FindServicePoint(uri);
        servicePoint.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
        return WebRequest.Create(uri) as HttpWebRequest;
    }

    private IPEndPoint Bind(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
    {
        IPAddress address = IPAddress.Parse(this.IP);
        return new IPEndPoint(address, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

UseIP useIP = new UseIP("Valid IP address here...");
Uri uri = new Uri("http://ip.nefsc.noaa.gov");
HttpWebRequest request = useIP.CreateWebRequest(uri);
// Then make the …
Run Code Online (Sandbox Code Playgroud)

c# binding ip-address multihomed

10
推荐指数
1
解决办法
8557
查看次数

.NET中有任何DECAPTCHA库吗?

我正在寻找一些示例项目来阅读CAPTCHA图像.在C#或VB中有没有?

伪代码:

String captchaText = CaptchaDecoder(Image captchaImage);
Run Code Online (Sandbox Code Playgroud)

c# captcha decode

9
推荐指数
1
解决办法
2万
查看次数

stream不支持并发IO读取或写入操作

我正在使用网络流从ASP.NET应用程序中的网络读取数据,并且在尝试从流中读取时出现此错误:

stream does not support concurrent IO read or write operations

它有时会发生.任何的想法 ?

.net c# multithreading stream

9
推荐指数
1
解决办法
5894
查看次数

ASP.NET应用程序池关闭问题

有时异常会导致application pool关闭.我手动启动它,但问题是如何在IIS 7.0(Windows Server 2008)中自动执行此行为.

iis-7 exception restart application-pool

9
推荐指数
1
解决办法
1万
查看次数

从嵌套循环退出所需级别

可能重复:
突破嵌套循环

如何从特定级别的嵌套循环中退出.例如:

foreach (item in Items)
{
    foreach (item2 in Items2)
    {
        // Break; => we just exit the inner loop
        //           while we need to break both loops.
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有更多的嵌套循环,我们想从内部退出第N个循环.像break(2)上面的例子那样打破了两个循环.

c# break nested-loops

9
推荐指数
2
解决办法
2万
查看次数

Visual Basic关键字的C#等价物:'With'...'End With'?

在Visual Basic中,如果要更改单个对象的多个属性,则需要With/End With声明:

Dim myObject as Object

// ' Rather than writing:
myObject.property1 = something
myObject.property2 = something2

// ' You can write:

with myObject
   .property1 = something
   .property2 = something2
   ...
End With
Run Code Online (Sandbox Code Playgroud)

我知道C#可以在创建新对象时执行此操作:

Object myObject = new Object { property1 = something, property2 = something2, ...};
Run Code Online (Sandbox Code Playgroud)

但是,如果myOject已经创建(如Visual Basic正在做什么),我该怎么做?

c# vb.net language-design with-statement

8
推荐指数
2
解决办法
6960
查看次数

在类名中使用下划线

_在课堂名称中使用是否安全?

什么是.命名的最佳替代品?(目前我使用_.)

c# naming-conventions

8
推荐指数
1
解决办法
8551
查看次数

间歇'远程名称无法解决'?

我有一个ASP.NET应用程序,我用它来HttpWebRequest经常阅读网页的内容.远程地址没有问题,我的应用程序始终正常工作.

虽然我没有改变任何东西,有时(大约每天一次)我得到这个错误:

the remote name could not be resolved.
Run Code Online (Sandbox Code Playgroud)

为什么以前解析的DNS名称有时无法解析?

asp.net dns httpwebrequest

8
推荐指数
1
解决办法
4722
查看次数

System.ServiceModel.Channels.BufferManager是线程安全的吗?

我通过静态成员创建一个缓冲区管理器BufferManager.CreateBufferManager.创建的这个新BufferManager线程由多个线程使用.

我应该使用lockwith TakeBuffer()和/ ReturnBuffer()或设计是线程安全的吗?

c# thread-safety buffer-manager

8
推荐指数
1
解决办法
1045
查看次数