したがって、リソースから応答を取得しようとする複数のスレッドがありますが、何らかの理由で、それらが別々のスレッドで実行されていても、各応答は、他のすべてがまだ待機中または閉じている場合にのみ返されます。私は使用してみ
WebResponse response = await request.GetResponseAsync();
ましたが、まず第一に、私はすでに別のスレッドを実行しているため、冗長に思えます。ビジュアルスタジオも教えてくれます
「await」演算子は、非同期メソッド内でのみ使用できます。このメソッドを「async」修飾子でマークし、戻り値の型を「Task」に変更することを検討してください。
何が起きてる?
編集(コード):
Start メソッド (シングルスレッドから呼び出される)
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
{ ...