WPF uygulamamda bir HTTP çağrısıyla bir veritabanını sorgularken async/beklemeyi kullanmak istiyorum. Async/beklemeyi ilk defa kullanıyorum, bu yüzden herhangi bir bariz hata görürseniz, onları işaret etmekte özgürsünüz.Async/Await İade edilen iterate Görev <IEnumerable <SomeClass>>
Sorun şu ki, geri dönen koleksiyon üzerinde artık yineleyemiyor, çünkü artık bir <IEnumerable<SomeClass>>
Görevidir ve ne öğrendiğime göre Görev IEnumerable/IEnumerator uygulamıyor.
Kodum şuna benziyor: Async/await yöntemini çağıran yöntem.
private void AddProjectDrawingAndComponentsFromServerToLocalDbAsync(CreateDbContext1 db, Project item)
{
var drawings = client.GetDrawingsAsync(item.ProjectId);
..... (waiting for GetDrawingsAsync to return, so i can iterate over the drawings)
db.SaveChanges();
}
yöntem GetDrawingsAsync:
Geri bitirmek için zaman uyumsuz yöntem için bekler yönteminepublic async Task<IEnumerable<Drawing>> GetDrawingsAsync(int projectId)
{
var drawings = Task.Factory.StartNew(() => _client.Get(new GetDrawingsReq() { ProjectId = projectId }));
return await drawings;
}
: Ben iade tip Task<IEnumerable<Drawing>>
dönüştürmek mümkün olacaktır nasıl
private void AddProjectDrawingAndComponentsFromServerToLocalDbAsync(CreateDbContext1 db, Project item)
{
var drawings = client.GetDrawingsAsync(item.ProjectId); <-- The returned Task<Task<IEnumerable<Drawing>>
Drawing prj_drawing = null;
foreach (var draw in drawings)
{
prj_drawing = new Drawing() { DrawingKey = draw.DrawingKey, Name = draw.Name, ProjectId = item.ProjectId };
item.AddDrawing(prj_drawing);
db.Projects.Add(item);
}
db.SaveChanges();
}
foreach döngüsünde tekrarlayabileceğim bir şey.