{"id":846,"date":"2013-11-30T02:16:14","date_gmt":"2013-11-30T02:16:14","guid":{"rendered":"http:\/\/blog.jaringanhosting.com\/?p=846"},"modified":"2013-12-03T02:03:05","modified_gmt":"2013-12-03T02:03:05","slug":"asp-net-hosting-jaringanhosting-com-tutorial-cancelling-tasks-pada-net-4-0","status":"publish","type":"post","link":"https:\/\/blog.jaringanhosting.com\/index.php\/asp-net-hosting-jaringanhosting-com-tutorial-cancelling-tasks-pada-net-4-0\/","title":{"rendered":"ASP.NET Hosting &#8211; JaringanHosting.com :: Tutorial Cancelling Tasks Pada .NET 4.0"},"content":{"rendered":"<p><a href=\"http:\/\/jaringanhosting.com\/Indonesia-ASP-NET-4-Hosting\" target=\"_blank\">. NET 4.0<\/a> memperkenalkan sebuah intstuksi yang disebut <em>CancellationToken<\/em> yang menyediakan mekanisme untuk membatalkan operasi baik yang sinkron dan asynchronous . Berikut adalah beberapa hal penting dari struktur ini :<\/p>\n<p>*<em>isCancellationRequested<\/em> &#8211; properti pada Boolean yang dapat disurvei oleh kode yang berfugnsi untuk mengetahui apakah telah dibatalkan atau dilakukan permintaan pembatalan.<\/p>\n<p>*<em>Register<\/em> &#8211; untuk mendaftar ketika permintaan pembatalan telah dilakukan.<\/p>\n<p><a href=\"http:\/\/jaringanhosting.com\/Indonesia-Windows-Basic-Hosting-Paket\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-733\" alt=\"banner jarhost\" src=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/banner-jarhost.png\" width=\"974\" height=\"346\" srcset=\"https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/banner-jarhost.png 974w, https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/banner-jarhost-300x106.png 300w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><\/a><\/p>\n<p>Disini terdapat CancellationTokenSource, yang berfungsi untuk mendapatkan token pembatalan . Keuntungan pada model pembatalan ini adalah bahwa token pembatalan dapat dikirimkan secara bebas kepada para listeners .. Berikut adalah langkah-langkah yang diperlukan untuk proses pembatalan :<\/p>\n<p>1. Pertama, buat cancellation token(cToken) menggunakan CancellationTokenSource class.<\/p>\n<p>2. Pada GenerateNumbers\u00a0 &gt; Task&lt;&gt;.Factory.StartNew().<\/p>\n<p>3. Masuk ke bagian Register(), metode ini untuk proses registrasi pada cancelNotification. Jadi, nanti akan ada notifikasi permintaan proses pembatalan telah dibuat.<\/p>\n<p>4. Setelah itu, CancellationTokenSource.Cancel() , dan proses pembatalan telah selesai.<\/p>\n<p>C#<\/p>\n<p>using System;<\/p>\n<p>using System.Threading.Tasks;<\/p>\n<p>using System.Threading;<\/p>\n<p>namespace CancelTask<\/p>\n<p>{<\/p>\n<p>class Program<\/p>\n<p>{<\/p>\n<p>static void Main(string[] args)<\/p>\n<p>{<\/p>\n<p>Console.WriteLine(&#8220;Press 1 to cancel task&#8221;);<\/p>\n<p>var cTokenSource = new CancellationTokenSource();<\/p>\n<p>\/\/ Create a cancellation token from CancellationTokenSource<\/p>\n<p>var cToken = cTokenSource.Token;<\/p>\n<p>\/\/ Create a task and pass the cancellation token<\/p>\n<p>var t1 = Task&lt;int&gt;.Factory.StartNew(()<\/p>\n<p>=&gt; GenerateNumbers(cToken), cToken);<\/p>\n<p>\/\/ to register a delegate for a callback when a<\/p>\n<p>\/\/ cancellation request is made<\/p>\n<p>cToken.Register(() =&gt; cancelNotification());<\/p>\n<p>\/\/ If user presses 1, request cancellation.<\/p>\n<p>if (Console.ReadKey().KeyChar == &#8216;1&#8217;)<\/p>\n<p>{<\/p>\n<p>\/\/ cancelling task<\/p>\n<p>cTokenSource.Cancel();<\/p>\n<p>}<\/p>\n<p>Console.ReadLine();<\/p>\n<p>}<\/p>\n<p>static int GenerateNumbers(CancellationToken ct)<\/p>\n<p>{<\/p>\n<p>int i;<\/p>\n<p>for (i = 0; i &lt; 10; i++)<\/p>\n<p>{<\/p>\n<p>Console.WriteLine(&#8220;Method1 &#8211; Number: {0}&#8221;, i);<\/p>\n<p>Thread.Sleep(1000);<\/p>\n<p>\/\/ poll the IsCancellationRequested property<\/p>\n<p>\/\/ to check if cancellation was requested<\/p>\n<p>if (ct.IsCancellationRequested)<\/p>\n<p>{<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>}<\/p>\n<p>return i;<\/p>\n<p>}<\/p>\n<p>\/\/ Notify when task is cancelled<\/p>\n<p>static void cancelNotification()<\/p>\n<p>{<\/p>\n<p>Console.WriteLine(&#8220;Cancellation request made!!&#8221;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>VB.NET (Converted)<\/p>\n<p>Imports System<\/p>\n<p>Imports System.Threading.Tasks<\/p>\n<p>Imports System.Threading<\/p>\n<p>Namespace CancelTask<\/p>\n<p>Friend Class Program<\/p>\n<p>Sub Main(ByVal args() As String)<\/p>\n<p>Console.WriteLine(&#8220;Press 1 to cancel task&#8221;)<\/p>\n<p>Dim cTokenSource = New CancellationTokenSource()<\/p>\n<p>&#8216; Create a cancellation token from CancellationTokenSource<\/p>\n<p>Dim cToken = cTokenSource.Token<\/p>\n<p>&#8216; Create a task and pass the cancellation token<\/p>\n<p>Dim t1 = Task(Of Integer).Factory.StartNew(Function() GenerateNumbers(cToken), cToken)<\/p>\n<p>&#8216; to register a delegate for a callback when a<\/p>\n<p>&#8216; cancellation request is made<\/p>\n<p>cToken.Register(Sub() cancelNotification())<\/p>\n<p>&#8216; If user presses 1, request cancellation.<\/p>\n<p>If Console.ReadKey().KeyChar = &#8220;1&#8221;c Then<\/p>\n<p>&#8216; cancelling task<\/p>\n<p>cTokenSource.Cancel()<\/p>\n<p>End If<\/p>\n<p>Console.ReadLine()<\/p>\n<p>End Sub<\/p>\n<p>&nbsp;<\/p>\n<p>Private Shared Function GenerateNumbers(ByVal ct As CancellationToken) As Integer<\/p>\n<p>Dim i As Integer<\/p>\n<p>For i = 0 To 9<\/p>\n<p>Console.WriteLine(&#8220;Method1 &#8211; Number: {0}&#8221;, i)<\/p>\n<p>Thread.Sleep(1000)<\/p>\n<p>&#8216; poll the IsCancellationRequested property<\/p>\n<p>&#8216; to check if cancellation was requested<\/p>\n<p>If ct.IsCancellationRequested Then<\/p>\n<p>Exit For<\/p>\n<p>End If<\/p>\n<p>Next i<\/p>\n<p>Return i<\/p>\n<p>End Function<\/p>\n<p>&#8216; Notify when task is cancelled<\/p>\n<p>Private Shared Sub cancelNotification()<\/p>\n<p>Console.WriteLine(&#8220;Cancellation request made!!&#8221;)<\/p>\n<p>End Sub<\/p>\n<p>End Class<\/p>\n<p>End Namespace<\/p>\n<p><strong>Maka hasil outputnya adalah :<\/strong><\/p>\n<p><a href=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/output1.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-847\" alt=\"output1\" src=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/output1.jpg\" width=\"406\" height=\"165\" srcset=\"https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/output1.jpg 406w, https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2013\/11\/output1-300x121.jpg 300w\" sizes=\"(max-width: 406px) 100vw, 406px\" \/><\/a><\/p>\n<blockquote><p>JaringanHosting.com adalah provider ASP.NET dan Windows hosting No #1 di Indonesia sesuai dengan rekomendasi dari pihak Microsoft. Microsoft memberikan rekomendasi ini berdasarkan pada beberapa persyaratan utama, yaitu: WebMatrix, WebDeploy, Visual Studio 2012, ASP.NET 4.5, ASP.NET MVC 4.0, Silverlight 5 and Visual Studio Lightswitch.<a href=\"http:\/\/www.microsoft.com\/web\/hosting\/HostingProvider\/Details\/950\" target=\"_blank\">Untuk keterangan lanjutan, silahkan klik disini!<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>. NET 4.0 memperkenalkan sebuah intstuksi yang disebut CancellationToken yang menyediakan mekanisme untuk membatalkan operasi baik yang sinkron dan asynchronous . Berikut adalah beberapa hal penting dari struktur ini : *isCancellationRequested &#8211; properti pada Boolean yang dapat disurvei oleh kode<\/p>\n","protected":false},"author":746,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/846"}],"collection":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/users\/746"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/comments?post=846"}],"version-history":[{"count":0,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/846\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/media?parent=846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/categories?post=846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/tags?post=846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}