我正在尝试构建一款可以与网站发送和接收响应的应用程序。
我在Stack Overflow上读到的解决方案都没有解决我的问题,因此我认为我的代码可能需要优化。
我有以下线程:
void DomainThreadNamecheapStart()
{
while (stop == false)
{
foreach (string FromDomainList in DomainList.Lines)
{
if (FromDomainList.Length > 1)
{
// I removed my api parameters from the string
string namecheapapi = "https://api.namecheap.com/foo" + FromDomainList + "bar";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(namecheapapi);
request.Proxy = null;
request.ServicePoint.Expect100Continue = false;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
status.Text = FromDomainList + "\n" + sr.ReadToEnd();
sr.Close();
}
}
}
}
当按钮被点击时,将调用此线程:
private void button2_Click(object sender, EventArgs e)
{
stop = false;
Thread DomainThread = new Thread(new ThreadStart(DomainThreadNamecheapStart));
DomainThread.Start();
}
使用上述代码,我只在10秒内接收到大约12个响应。当我尝试使用JavaScript或简单的IFrame进行相同的请求时,速度快了一倍以上。浏览器不会为连接使用多个线程,它会等待一个完成后再开始新的。
我尝试设置request.Proxy = null;
,但影响微乎其微。
我注意到HTTPS
比HTTP
慢2-3倍。不幸的是,我必须使用HTTPS
。有什么方法可以让它更快吗?
status.Text = ...
看起来很像你正在从非 UI 线程访问 UI 组件。 - Damien_The_Unbelieverhttps
总会存在开销。 - Mike Perrenoud