Kurucular uyumsuz olabilir mi?
Yapıcı bazı verileri doldurmak için çalışıyorum nerede Silverlight projem var:
public class ViewModel
{
public ObservableCollection<TData> Data { get; set; }
async public ViewModel()
{
Data = await GetDataTask();
}
public Task<ObservableCollection<TData>> GetDataTask()
{
Task<ObservableCollection<TData>> task;
//Create a task which represents getting the data
return task;
}
}
Ne yazık ki, bir hata alıyorum:
Değiştirici
async
Bu madde için geçerli değildir
Ben standart bir yöntem sarmak ve yapıcı dersen tabii ki,:
public async void Foo()
{
Data = await GetDataTask();
}
gayet iyi çalışıyor. Eğer içeri-dışarı eski yolu kullanıyorum aynı şekilde
GetData().ContinueWith(t => Data = t.Result);
O da işe yarar. Sadece bir kurucu içinden await
doğrudan arayamıyoruz neden merak ediyordum. Muhtemelen (hatta) açık kenar bir çok vaka ve buna karşı nedeni vardır, sadece herhangi bir şey bulamıyorum. Ayrıca bir açıklama için arama yaptım, ama bulamadım.
CEVAP
Kurucu çok benzer bir yöntem inşa türünü döndürmek için hareket eder. Ve async
yöntem ya “ve” void
Task
. unut ateşle olmalı sadece herhangi bir tür dönebilirsiniz.
Eğer tür oluşturucu T
aslında çok kafa karıştırıcı olurdu Task<T>
, döndü, sanırım.
Eğer uyumsuz kurucu async void
bir yöntem olarak aynı şekilde davranır, yapıcı ne tatili böyle olması gerekiyordu. Kurucu döndükten sonra, tam olarak başlatılmış bir nesneyi almalısınız. Aslında düzgün olacak bir nesnenin gelecekte bazı tanımsız noktada başlatıldı. Eğer şanslıysan ve zaman uyumsuz başlatma başarısız değildir.
Tüm bu sadece bir tahmin. Ama uyumsuz bir kurucu imkanı olması buna değer daha fazla sorun getiriyor gibi geliyor bana.
Eğer sizin istediğiniz “ateşle ve unut” anlam async void
yöntemleri (hangi kaçınılmalıdır mümkünse), kolayca saklanması tüm kod async void
yöntem ve ara kendi kurucu olarak belirtilen soru.
Scala, nasıl birden fazla kurucular il...
Not load 'xxx' ya da, bağıml...
Ne kadar iş arasında özel durumlar yay...
Vim türü özel kısayollar dosya olabili...
Vs senkronize yürütme uyumsuz, bu gerç...