Я знаю, что его много спрашивали, но моя проблема заключается в том, что мой метод не будет ждать завершения запроса, даже несмотря на то, что я реализовал TaskCompletionSource, который должен был выполнить эту работу, но это не делает.Телефон Windows 8 Запрос RestSharp. Async/await
public DecksViewModel(bool local)
{
DList = new List<Deck>();
if (local)
InitializeLocalDeckList();
else
{
Dereffering();
}
}
public async void Dereffering()
{
var e = await InitilaizeWebDeckList();
List<DeckIn> decksIn = JsonConvert.DeserializeObject<List<DeckIn>>(e);
foreach (DeckIn d in decksIn)
{
Deck dadd = new Deck();
dadd.CardCount = 0;
dadd.Name = d.name;
dadd.PicturePath = d.image;
dadd.InstallDirectory = false;
DList.Add(dadd);
}
DataSource = AlphaKeyGroup<Deck>.CreateGroups(DList, System.Threading.Thread.CurrentThread.CurrentUICulture, (Deck s) => { return s.Name; }, true);
}
public Task<String> InitilaizeWebDeckList()
{
var tcs = new TaskCompletionSource<string>();
var client = new RestClient("blabla.com");
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic blabla");
client.ExecuteAsync(request, response =>
{
test = response.Content;
tcs.SetResult(response.Content);
});
return tcs.Task;
}
Так что, когда я называю конструктор DecksViewModel, я asyncally попытаться запросить данные с веб-сервера и заполнить модель. Дело в том, что соответствующее представление «не ждет» запроса для заполнения модели, поэтому оно отображается пустым. Я использую
List<AlphaKeyGroup<Deck>> DataSource
заполнить LongListSelector через DataBinding. Но DataSource еще не установлен, когда он привязан. Надеюсь, вы сможете помочь
спасибо, это работает, если Dereffering возвращает задачу ... Спасибо, су очень много – Anon