RunContinuationsAsynchronously devamlılığını zaman uyumsuz olarak çalışmıyor

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 3118695
Belirtiler
.NET Framework 4.6 yeni bir enum türü değeri, RunContinuationsAsynchronously, TaskCompletionSource ve TaskCreationOptionsnumaralamalar 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.Unwrapdevamlı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. RunContinuationsAsynchronouslydeğ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 olan .NET Framework takım, gelecekteki bir güncelleştirme dahil etmek için bir çözüm üzerinde çalışmaktadır.


Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 3118695 - Son İnceleme: 11/25/2015 05:45:00 - Düzeltme: 1.0

Microsoft .NET Framework 4.6.1

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3118695 KbMttr
Geri bildirim