ASP.NET Hosting – JaringanHosting.com :: Tutorial Cancelling Tasks Pada .NET 4.0

. 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 – properti pada Boolean yang dapat disurvei oleh kode yang berfugnsi untuk mengetahui apakah telah dibatalkan atau dilakukan permintaan pembatalan.

*Register – untuk mendaftar ketika permintaan pembatalan telah dilakukan.

banner jarhost

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 :

1. Pertama, buat cancellation token(cToken) menggunakan CancellationTokenSource class.

2. Pada GenerateNumbers  > Task<>.Factory.StartNew().

3. Masuk ke bagian Register(), metode ini untuk proses registrasi pada cancelNotification. Jadi, nanti akan ada notifikasi permintaan proses pembatalan telah dibuat.

4. Setelah itu, CancellationTokenSource.Cancel() , dan proses pembatalan telah selesai.

C#

using System;

using System.Threading.Tasks;

using System.Threading;

namespace CancelTask

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine(“Press 1 to cancel task”);

var cTokenSource = new CancellationTokenSource();

// Create a cancellation token from CancellationTokenSource

var cToken = cTokenSource.Token;

// Create a task and pass the cancellation token

var t1 = Task<int>.Factory.StartNew(()

=> GenerateNumbers(cToken), cToken);

// to register a delegate for a callback when a

// cancellation request is made

cToken.Register(() => cancelNotification());

// If user presses 1, request cancellation.

if (Console.ReadKey().KeyChar == ’1′)

{

// cancelling task

cTokenSource.Cancel();

}

Console.ReadLine();

}

static int GenerateNumbers(CancellationToken ct)

{

int i;

for (i = 0; i < 10; i++)

{

Console.WriteLine(“Method1 – Number: {0}”, i);

Thread.Sleep(1000);

// poll the IsCancellationRequested property

// to check if cancellation was requested

if (ct.IsCancellationRequested)

{

break;

}

 

}

return i;

}

// Notify when task is cancelled

static void cancelNotification()

{

Console.WriteLine(“Cancellation request made!!”);

}

}

}

 

VB.NET (Converted)

Imports System

Imports System.Threading.Tasks

Imports System.Threading

Namespace CancelTask

Friend Class Program

Sub Main(ByVal args() As String)

Console.WriteLine(“Press 1 to cancel task”)

Dim cTokenSource = New CancellationTokenSource()

‘ Create a cancellation token from CancellationTokenSource

Dim cToken = cTokenSource.Token

‘ Create a task and pass the cancellation token

Dim t1 = Task(Of Integer).Factory.StartNew(Function() GenerateNumbers(cToken), cToken)

‘ to register a delegate for a callback when a

‘ cancellation request is made

cToken.Register(Sub() cancelNotification())

‘ If user presses 1, request cancellation.

If Console.ReadKey().KeyChar = “1″c Then

‘ cancelling task

cTokenSource.Cancel()

End If

Console.ReadLine()

End Sub

 

Private Shared Function GenerateNumbers(ByVal ct As CancellationToken) As Integer

Dim i As Integer

For i = 0 To 9

Console.WriteLine(“Method1 – Number: {0}”, i)

Thread.Sleep(1000)

‘ poll the IsCancellationRequested property

‘ to check if cancellation was requested

If ct.IsCancellationRequested Then

Exit For

End If

Next i

Return i

End Function

‘ Notify when task is cancelled

Private Shared Sub cancelNotification()

Console.WriteLine(“Cancellation request made!!”)

End Sub

End Class

End Namespace

Maka hasil outputnya adalah :

output1

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.Untuk keterangan lanjutan, silahkan klik disini!