gpt4 book ai didi

c# - HttpWebRequest 在另一个线程中返回请求的结果 (Monotouch)

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:22 24 4
gpt4 key购买 nike

这个问题是关于 Monotouch 的,但它可能是一般的 .NET 问题或 Mono 库的问题。

我遇到了很长一段时间以来遇到的最奇怪的问题。

我启动了 2 个线程,每个线程创建一个 HttpWebRequest。这些线程同时启动(好吧,相隔一毫秒)。发生的情况是第一个 HTTP 请求 (url1) 对 GetResponse() 的调用接收到第二个 HTTP 请求 (url2) 的内容。发生这种情况时,第二个 HTTP 请求会在 30 秒后超时。

这不会每次都发生,但确实有 5 次发生了 4 次。

这是代码:(经过简化以生成工作测试用例)

public void Launch()
{
Thread thread1 = new Thread(() => { GetData("http://url1"); });
Thread thread2 = new Thread(() => { GetData("http://url2"); });

thread1.Start();
thread2.Start();
}

public static void GetData(string url)
{
try
{
XDocument xDoc;

var webRequest = HttpWebRequest.Create(url);

using (var response = webRequest.GetResponse())
{
using (var stream = response.GetResponseStream())
{
xDoc = XDocument.Load(stream);

Logger.Default.Log("Result for {0}: {1}", url, xDoc);
}
}
}
catch(Exception ex)
{
Logger.Default.Log("Result for {0}: [Exception: {1}]", url, ex.Message);
}
}

这是输出(5 次中有 4 次):

Result for http://url1: <contents of http://url2>
Result for http://url2: [Exception: timeout...]

当一切正常时(5 次中有 1 次):

Result for http://url1: <contents of http://url1>
Result for http://url2: <contents of http://url2>

最佳答案

听起来不像一般的 .net 行为。

听起来像是一个错误 - 向 xamarin 的 bugzilla 报告它? https://bugzilla.xamarin.com/

关于c# - HttpWebRequest 在另一个线程中返回请求的结果 (Monotouch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com