Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale aşağıdaki derleyici hatalarını kapsar:
-
CS1983: Bu zaman uyumsuz bir yöntem olduğundan, dönüş ifadesi '
T' yerine 'Task<T>' türünde olmalıdır. - CS1985: Catch bloğunda bekleyemezsiniz.
-
CS1986: '
await', türün uygun bir 'GetAwaiter' yöntemine sahip olmasını gerektirir. - CS1989: Zaman uyumsuz lambda ifadeleri ifade ağaçlarına dönüştürülemez.
- CS1991: 'Type' bir Windows Çalışma Zamanı olayı ve 'event' normal bir .NET olayı olduğundan 'event' uygulayamıyor.
-
CS1992: '
await' işleci yalnızca 'async' değiştiricisi ile işaretlenmiş bir yöntem veya lambda ifadesi içinde bulunduğunda kullanılabilir. -
CS1994: '
async' değiştiricisi yalnızca gövdesi olan yöntemlerde kullanılabilir. -
CS1995: '
await' işleci, yalnızca bir sorgu ifadesinin başlangıçtaki 'from' yan tümcesinin ilk koleksiyon ifadesi içinde ya da 'join' yan tümcesinin koleksiyon ifadesi içinde kullanılabilir. - CS1996: Kilit deyimi gövdesinde bekleme ifadesi kullanılamaz.
- CS1997: İşlev bir değer döndüren zaman uyumsuz bir yöntem olduğundan, dönüş anahtar sözcüğünü nesne ifadesi takip etmemelidir.
-
CS1998: Bu zaman uyumsuz yöntemde '
await' işleçleri eksiktir ve zaman uyumlu olarak çalıştırılır. Engelleyici olmayan API çağrılarını beklemek için 'await' işlecini veya arka plan iş parçacığında CPU'ya bağlı çalışma yapmak için 'await Task.Run(...)' kullanmayı göz önünde bulundurun. -
CS4008: '
void' ifadesi beklenecek durumda değil. - CS4009: Void veya int döndüren giriş noktası eşzamansız olamaz.
-
CS4014: Bu çağrı beklenmediği için, çağrı tamamlanmadan önce geçerli yöntemin yürütülmesi devam eder. çağrının
awaitsonucuna işlecini uygulamayı göz önünde bulundurun. -
CS4032: '
await' işleci yalnızca zaman uyumsuz bir yöntem içinde kullanılabilir. Bu yöntemi 'async' değiştiricisi ile işaretlemeyi ve dönüş türünü 'Task<T>' olarak değiştirmeyi göz önünde bulundurun. -
CS4033: '
await' işleci yalnızca zaman uyumsuz bir yöntem içinde kullanılabilir. Bu yöntemi 'async' değiştiricisi ile işaretlemeyi ve dönüş türünü 'Task' olarak değiştirmeyi göz önünde bulundurun. - CS8892: Zaman uyumlu bir giriş noktası bulunduğundan yöntem giriş noktası olarak kullanılmaz.
-
CS9123: '
&' işleci, zaman uyumsuz yöntemlerdeki parametrelerde veya yerel değişkenlerde kullanılmamalıdır. -
CS9330: '
MethodImplAttribute.Async' yöntemlere el ile uygulanamaz. 'async' yöntemini işaretleyin.
İfade gereksinimlerini bekle
- CS1985: Catch yan tümcesinde await kullanılamaz.
-
CS1986: '
await', türün uygun bir 'GetAwaiter' yöntemine sahip olmasını gerektirir. -
CS1992: '
await' işleci yalnızca 'async' değiştiricisi ile işaretlenmiş bir yöntem veya lambda ifadesi içinde bulunduğunda kullanılabilir. -
CS1995: '
await' işleci yalnızca bir sorgu ifadesinde, ilk 'from' yan tümcesinin ilk koleksiyon ifadesi içinde veya bir 'join' yan tümcesinin koleksiyon ifadesi içinde kullanılabilir. - CS1996: lock ifadesinin gövdesinde await ifadesi kullanılamaz.
-
CS4008: '
void' beklenemiyor. -
CS4032: '
await' işleci yalnızca zaman uyumsuz bir yöntem içinde kullanılabilir. Bu yöntemi 'async' değiştiricisi ile işaretlemeyi ve dönüş türünü 'Task<T>' olarak değiştirmeyi göz önünde bulundurun. -
CS4033: '
await' işleci yalnızca zaman uyumsuz bir yöntem içinde kullanılabilir. Bu yöntemi 'async' değiştiricisi ile işaretlemeyi ve dönüş türünü 'Task' olarak değiştirmeyi göz önünde bulundurun.
işlecini await doğru kullanmak için bu kuralları izleyin. Daha fazla bilgi için bkz. Async ve await ile zaman uyumsuz programlama.
- Catch yan tümcelerinde
awaitkullanmayın (CS1985). Deneme bloklarında ve son bloklarda (C# 6 ve sonraki sürümlerde) kullanabilirsinizawaitancak catch blokları özel durum işleme ve denetim akışı ile özel zorluklar sunar. - Kullanmayın
awaitdeyimi bloklarının içindelock. Derleyici, kilitlenmelere eğilimli kod yaymamak için bunu desteklemez. - Yalnızca belirli konumlarda
await(CS1995) kullanın: ilkfromtümcenin koleksiyon ifadesinde veya birjoinyan tümcesinin koleksiyon ifadesinde. - Yöntemleri veya lambda ifadelerini kullanmadan önce
asyncdeğiştiriciyle işaretleyin (CS1992, CS4032, CS4033). - Beklenen türler için bir awaiter türü döndüren erişilebilir durumda bir
GetAwaiteryöntemi olduğundan emin olun (CS1986). -
await,voidtüründeki ifadelere uygulanmamalıdır (CS4008). - Değer döndürmeyen yöntemler için veya
Taskdeğer döndüren yöntemler için dönüş türünüTask<T>olarak değiştirin.
Asin yöntem imzası gereksinimleri
-
CS1983: Bu, zaman uyumsuz bir yöntem olduğundan, dönüş ifadesi '
Task<T>' türünde olmalı, 'T' yerine. -
CS1994: '
async' değiştiricisi yalnızca gövdesi olan yöntemlerde kullanılabilir. - CS4009: Void veya int döndüren giriş noktası asenkron olamaz.
- CS8892: Zaman uyumlu bir giriş noktası bulunduğundan yöntem giriş noktası olarak kullanılmaz.
-
CS9330: '
MethodImplAttribute.Async' yöntemlere el ile uygulanamaz. 'async' yöntemini işaretleyin.
Asenkron yöntemleri doğru şekilde tanımlamak için bu imza gereksinimlerini izleyin. Daha fazla bilgi için bkz. Asenkron ana dönüş değerleri.
- Geçerli türlerden birini döndürür:
void, Task,Task<T>, , görev benzeri bir tür, IAsyncEnumerable<T>veya IAsyncEnumerator<T> (CS1983). - Değiştiriciyi
asyncyalnızca gövdeli yöntemlerde kullanın (CS1994). Arabirimlerdekiasyncveya sınıflardaki soyut yöntemlerdeki değiştiriciyi kaldırın. - Giriş noktasında
asynckullanmak için C# 7.1 veya daha yeni bir sürüme güncelleyinMainveyaasynchatası almamak için daha eski sürümlerde giriş noktası için kullanmaktan kaçının. - Hem senkron hem de asenkron giriş noktalarınız (CS8892) varsa, senkron giriş noktalarını kaldırın.
-
MethodImplAttribute.Asyncanahtar sözcüğünü el ile uygulamakasyncyerine kullanın (CS9330).
Asenkron uygulamalar
- CS1989: Zaman uyumsuz lambda ifadeleri ifade ağaçlarına dönüştürülemez.
- CS1991: 'Type', bir Windows Çalışma Zamanı olayı olup 'event' ise normal bir .NET olayı olduğundan, 'event'i uygulayamaz.
- CS1997: İşlev bir değer döndüren zaman uyumsuz bir yöntem olduğundan, dönüş anahtar sözcüğünü nesne ifadesi takip etmemelidir.
-
CS1998: Bu zaman uyumsuz yöntemde '
await' işleçleri eksiktir ve zaman uyumlu olarak çalıştırılır. Engelleyici olmayan API çağrılarını beklemek için 'await' işlecini veya arka plan iş parçacığında CPU'ya bağlı çalışma yapmak için 'await Task.Run(...)' kullanmayı göz önünde bulundurun. -
CS4014: Bu çağrı beklenmediği için, çağrı tamamlanmadan önce geçerli yöntemin yürütülmesi devam eder. çağrının
awaitsonucuna işlecini uygulamayı göz önünde bulundurun. -
CS9123: '
&' işleci, zaman uyumsuz yöntemlerdeki parametrelerde veya yerel değişkenlerde kullanılmamalıdır.
Eşzamansız kodu doğru yazmak ve yaygın tuzaklardan kaçınmak için bu en iyi uygulamalara uyun. Daha fazla bilgi için bkz. Async ve await ile zaman uyumsuz programlama.
- veya (Task) döndüren Task<TResult> zaman uyumsuz yöntemlere çağrıları her zaman bekleyin. Beklenmeyen çağrılar, kayıp istisnalara ve beklenmeyen davranışlara yol açabilir.
-
Task(genel olmayan) döndüren zaman uyumsuz yöntemlerden değer döndürmeyin; bunun yerineTask<T>kullanın (CS1997). - Zaman uyumsuz yöntemlere en az bir
awaitişleç ekleyin ya daasyncmodifikasyonunu (CS1998) kaldırın. - Metot
returndöndürecekseTaskdeyimini kaldırın (CS1997, CS1998). - Bir değer döndürmek için
Task<T>yöntemin dönüş türünü olarak değiştirin (CS1997, CS1998). - Async durum makinesine gerek yoksa
asyncdeğiştiricisini kaldırın ve görevi doğrudan döndürün (CS1997, CS1998). - İfade ağaçlarında asenkron yöntemler kullanmayın (CS1989). İfade ağaçları kodu veri olarak temsil eder ve zaman uyumsuz yöntemlerin gerektirdiği karmaşık durum makine dönüştürmelerini desteklemez.
- Arayüzde veya WinRT olayında erişimci ekleme veya kaldırma işlemini asenkron (CS1991) olarak işaretlemeyin. Bu, Windows Çalışma Zamanı birlikte çalışabilirliği için platforma özgü bir kısıtlamadır.
- Zaman uyumsuz yöntemler içindeki ifadelerde adres işlecini (
&) kullanmaktan kaçının (CS9123). Hedef, askıya alma sırasında bellekte yeniden konumlandırılabilir ve işaretçi geçersiz hale gelebilir.