Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

RunContinuationsAsynchronously tidak berjalan continuations asinkron

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3118695
Gejala
.NET Framework 4.6 ditambahkan enum Ketik nilai yang baru, RunContinuationsAsynchronously, enums TaskCompletionSource dan TaskCreationOptions. Nilai ini memaksa tugas untuk menjalankan asinkron, dan ini akan membantu menghindari situasi kertas macet. Namun, masalah telah ditemukan di mana, untuk beberapa jenis khusus continuations (khususnya ketikaTask.WhenAll, Task.WhenAnyatau TaskExtensions.Unwrapmembuat continuations), opsi diabaikan. Oleh karena itu, continuations mungkin masih berjalan serentak.

Contoh berikut ini menunjukkan masalah. Jika nilai RunContinuationsAsynchronouslyyang berfungsi dengan baik, thread dua id yang akan dicetak tidak akan sama, karena kelanjutan akan selalu dijadwalkan ke topik yang berbeda.

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();    }}

Pemecahan masalah
Saat ini tidak ada penyelesaian untuk masalah ini. Microsoft .NET Framework tim bekerja pada solusi yang termasuk dalam pembaruan masa mendatang.


Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 3118695 - Tinjauan Terakhir: 11/25/2015 03:47:00 - Revisi: 1.0

Microsoft .NET Framework 4.6.1

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3118695 KbMtid
Tanggapan