. 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.
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 :
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!