Uygulandığı Öğe
.NET Framework 4.6.1

Belirtiler

.NET Framework 4.6 yeni bir enum türü değeri, RunContinuationsAsynchronously, TaskCompletionSource ve TaskCreationOptions numaralamalar için eklendi. Bu değer görevlerin zaman uyumsuz olarak çalışmasını zorlar ve bu çıkmaz durumları önlemek için yardımcı olur. Bununla birlikte, bir sorun bulundu nerede, devamlılığını (özellikle) Task.WhenAll, Task.WhenAnyveya TaskExtensions.Unwrap devamlılığını oluşturduğunuzda, belirli bazı türleri için seçeneği yok sayılır. Bu nedenle, devamlılığını yine eş zamanlı olarak çalışabilir.Aşağıdaki örnek bir sorunu gösterir. RunContinuationsAsynchronously değeri doğru olarak çalışıp, devamı her zaman farklı iş parçacıkları zamanlanması çünkü iki iş parçacığı Yazdırılan çıkış kimlikleri asla aynı olacaktır.using System;using System.Threading;using System.Threading.Tasks;class Program{ static void Main() { var mres = new ManualResetEventSlim(); Console.WriteLine(Environment.CurrentManagedThreadId); var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); var t = Task.WhenAll(tcs.Task); t.ContinueWith(delegate { Console.WriteLine(Environment.CurrentManagedThreadId); mres.Set(); }, TaskContinuationOptions.ExecuteSynchronously); tcs.SetResult(true); mres.Wait(); }}

Çözüm

Şu anda bu soruna yönelik geçici çözüm yoktur. Microsoft .NET Framework takım, gelecekteki bir güncelleştirme dahil etmek için bir çözüm üzerinde çalışmaktadır.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.