所以我有多个线程试图从资源中获取响应,但出于某种原因 - 即使它们在单独的线程中运行,每个响应也只会在所有其他线程仍在等待或关闭时返回。我尝试使用
WebResponse response = await request.GetResponseAsync();
,但首先这对我来说似乎是多余的,因为我已经在运行单独的线程,而且 Visual Studio 也告诉我
'await' 运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。
这里发生了什么?
编辑(代码):
启动方法(从单个线程调用)
public void Start()
{
if (!Started)
{
ByteAt = 0;
request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "GET";
request.AddRange(ByteStart, ByteStart + ByteLength);
downloadThread = new Thread(DownloadThreadWorker);
downloadThread.Start();
Started = true;
Paused = false;
}
}
下载线程:
private void DownloadThreadWorker()
{
WebResponse response = request.GetResponse();
if (response != null)
{
if (!CheckRange(response))
Abort(String.Format("Multi part downloads not supported (Requested length: {0}, response length: {1})", ByteLength, response.ContentLength));
else
{ ...