0

このフォーラムで自分の問題を検索しましたが、適切なものが見つかりませんでした。プログラム フローに問題があります。

私は Azure に質問テーブルを持つ MobileService を持っています。私のアプリには、ユーザーをクイズ ページに移動させるメイン メニューとクイズ ボタンがあります。クイズ ページには、リストの最初の質問を表示する [クイズを開始] ボタンがあります。

これは、データベースから質問を取得するために使用するコードです。ページ コンストラクターに配置しました。ユーザーがクイズ ボタンを押すと、ページを開くのに遅延が発生しますが、それほど長くはかからないため、それほど悪くはありません。 、ほんの数秒ですが、これを行うより良い方法はありますか?

Task<IMobileServiceTable<Question>> getDataFromDatabase = new Task<IMobileServiceTable<Question>>(getQuestions);
getDataFromDatabase.Start();
QuestionList = await getDataFromDatabase;

同じ関数に、クイズ開始ボタンの isEnabled 属性を変更するこのコードがあります。これにより、データがサーバーから送信されない限り、クイズの進行が停止しますが、常に機能するとは限りません。また、開始ボタン isenabled が true に設定されている場合があり、タスクが完了しても MobileServiceCollectionView QuestionList から nullreference を取得します。

Task<bool> assignData = new Task<bool>(assignTabletoitems);
assignData.Start();
startbutton.IsEnabled = await assignData;

これに関する助けをいただければ幸いです。

ありがとう

4

1 に答える 1

0

Task<T>データベースにクエリを実行するために の新しいインスタンスを作成する必要はありません(getQuestions最初のコード スニペットで使用されている定義を提供していないため、そのコードが想定どおりに機能しているかどうかはわかりません)。通常行うことは、MobileServiceClientオブジェクトから適切な型のテーブルを取得し、それに対してクエリを実行することです。

var client = new MobileServiceClient(appUrl, appKey);
var table = client.GetTable<Question>();
var questionList = await table.ToListAsync();

2 番目のコード スニペットに関しては、定義がないassignTabletoitemsと、そのコードで何をしようとしているのかを知るのは非常に困難です。

于 2013-04-01T19:46:17.850 に答える