私は非同期に不慣れで、プログラミングのスタイルを待っています。次の問題を解決するにはどうすればよいですか。
最初に以下のコードを呼び出しています。ここでの問題は、最初の行が を入力する必要があるのを待っていることですcategoriesvm.Categorieslist
。これは行われませんが、2 行目が呼び出されます。(これは await のデフォルトの動作だと思います)
categoriesvm.Categorieslist
最初の行に が入力されている場合にのみ 2 行目が呼び出されるようにするにはどうすればよいですか?
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
categoriesvm.GetCategories();
BookCategories.DataContext = from vm in categoriesvm.Categorieslist select vm;
}
上記のコードでは、最初の行を実行すると、Categorieslist
上でアクセスしているリストの下に移動します。
public async void GetCategories()
{
Categorieslist = new ObservableCollection<Categories>(await PhoneClient.GetDefaultCategories());
}
はphoneclient
以下です
public class PhoneClient
{
private static readonly HttpClient client;
public static Uri ServerBaseUri
{
get { return new Uri("http://169.254.80.80:30134/api/"); }
}
static PhoneClient()
{
client =new HttpClient();
client.MaxResponseContentBufferSize = 256000;
client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
}
public async static Task<List<Categories>> GetDefaultCategories()
{
HttpResponseMessage getresponse = await client.GetAsync(ServerBaseUri + "Categoryss");
string json = await getresponse.Content.ReadAsStringAsync();
json = json.Replace("<br>", Environment.NewLine);
var categories = JsonConvert.DeserializeObject<List<Categories>>(json);
return categories.ToList();
}
}