0

Microsoft 提供のサンプル「Process Tasks as they Finish」を見て、その TPL サンプルを Azure Storage に適応させています。

私が抱えている問題は、変数domainDataがコンパイラでエラーを報告する場所の下にマークされています: Unknown method Select(?) of TableQuerySegment<DynamicTableEntity> (完全修飾名前空間が削除されました)

次のエラーも表示されますDynamicTableEntity domainData \n\r Unknown type of variable domainData

      /// if you have the necessary references the following most likely should compile and give you same error

            CloudStorageAccount acct = CloudStorageAccount.DevelopmentStorageAccount;

            CloudTableClient client = acct.CreateCloudTableClient();
            CloudTable tableSymmetricKeys = client.GetTableReference("SymmetricKeys5");

            TableContinuationToken token = new TableContinuationToken() { };
            TableRequestOptions opt = new TableRequestOptions() { };
            OperationContext ctx = new OperationContext() { ClientRequestID = "ID" };
            CancellationToken cancelToken = new CancellationToken();

            List<Task> taskList = new List<Task>();

            var task2 = tableSymmetricKeys.CreateIfNotExistsAsync(cancelToken);
            task2.Wait(cancelToken);


            int depth = 3;
            while (true)
            {
                Task<TableQuerySegment<DynamicTableEntity>> task3 = tableSymmetricKeys.ExecuteQuerySegmentedAsync(query, token, opt, ctx, cancelToken);

                // Run the method
                task3.Wait();

                 Console.WriteLine("Records retrieved in this attempt = " + task3.Result.Count());// + " | Total records retrieved = " + state.TotalEntitiesRetrieved);



        // HELP! This is where I'm doing something the compiler doesn't like
        //
                IEnumerable<Task<int>> getTrustDataQuery =
                              from domainData in task3.Result select QueryPartnerForData(domainData, "yea, search for this.", client, cancelToken);

                // Prepare for next iteration or quit
                if (token == null)
                {
                    break;
                }
                else
                {
                    token = task3.Result.ContinuationToken;

                    // todo: persist token  token.WriteXml()
                }
            }




    //....

  private static object QueryPartnerForData(DynamicTableEntity domainData, string p, CloudTableClient client, CancellationToken cancelToken)
    {
        throw new NotImplementedException();
    }
4

1 に答える 1

0

コードにクエリがありません。コードをテストするために、次のクエリを作成しました。

TableQuery<DynamicTableEntity> query = new TableQuery<DynamicTableEntity>()
    .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "temp"));

QueryPartnerForDataまた、何もしない (単に null を返す)メソッドを追加したところ、すべて正常に動作しました。QueryPartnerForDataということは、方法の問題ではないでしょうか。実際のエラーを見つける最良の方法は、あちこちにブレークポイントを設定することです。

StackOverflowException は、多くの場合、無限ループに陥っていることを意味します。ブレークポイントを数回実行して、コードがスタックしている場所を確認します。他のメソッドをQueryPartnerForData呼び出し、他のメソッドがQueryPartnerForData再度呼び出す可能性はありますか?

于 2012-11-26T06:45:44.963 に答える