1

「すべてのコード パスが値を返すわけではない」というエラーが表示される理由がわかりません (以下のコメント付きコードを参照)。foreach ループが 1 つのパスではなく多数のパスと見なされ、反復が値を返さない可能性があるにもかかわらず、ループが継続する可能性があるためでしょうか?

[ところで、私の目標は、100K の URL を処理し、多くの Web リクエストを作成してそれらが同時にアクティブになるようにし、各 URL のステータス (有効、移動、タイムアウト) をキャプチャしながら、一連の URL が実行されているときに UI を更新することです。これまでに見つかった不正な URL の数と、これまでに処理された URL の数に関するリアルタイムの情報で処理されます。同期 Web リクエストで Parallel.ForEach アプローチを試しましたが、UI が応答しなくなりました。]

Rows.Count == 0 の場合のテストを含めるように編集されました。

  public async Task<UrlInfo> ProcessUrls(DataTable urls)
    {


     if (urls.Rows.Count == 0)
        {
            return new UrlInfo();
        }
        else

      {


        foreach (DataRow r in urls.Rows)
        {

            UrlInfo info = new UrlInfo()
                {
                    Url = (string)r["url"],
                    status = UrlStatusCode.untested,
                    articleid = (int)r["articleid"]
                };

               return await Foo(info);                  
         }

     }
        //return new UrlInfo();  // error unless this line is uncommented
    }



      public async Task<UrlInfo> Foo(UrlInfo info) {

        <snip>
      }
4

1 に答える 1