.


:




:

































 

 

 

 


Using System.Threading.Tasks;




class DemoCancelTask {

// , , static void MyTask(Object ct) {

CancellationToken cancelTok = (CancellationToken) ct;

// , , . cancelTok.ThrowIfCancellationRequested();

Console.WriteLine("MyTask() ");

for(int count = 0; count < 10; count++) {

// , if(cancelTok.IsCancellationRequested) {

Console.WriteLine(" ."); cancelTok.ThrowIfCancellationRequested();

}

Thread.Sleep(500);

Console.WriteLine(" MyTask() " + count);

}

Console.WriteLine("MyTask ");

}

static void Main() {

Console.WriteLine(" .");

// .

CancellationTokenSource cancelTokSrc = new CancellationTokenSource();

// , .

Task tsk = Task.Factory.StartNew(MyTask, cancelTokSrc.Token,

CancelTokSrc.Token);

// .

Thread.Sleep(2000); try {

// . cancelTokSrc.Cancel();

// Main() ,

// tsk. tsk.Wait();

} catch (AggregateException exc) { if(tsk.IsCanceled)

Console.WriteLine(" tsk \");

// :

// Console.WriteLine(exc);

} finally {

Tsk.Dispose(); cancelTokSrc.Dispose();

}

Console.WriteLine(" .");

}

}

. 2 .

.

MyTask()

.

tsk

.

, MyTask () Main () . , MyTask () . AggregateException, . tsk , , . , , , AggregateException , , , .

, AggregateException. , , .

 

. . , , , , .

AggregateException, , . Flatten (), AggregateException AggregateException. , Handle (), , AggregateException.

, . TaskCreationOptions Task StartNew (). , TaskFactory FromAsync (), ( Asynchronous Programming Model).

, TaskScheduler. , , .NET Framework. . , .

Parallel

, , , TPL , Thread. , TPL . Parallel, , : .

Parallel , For (), For Each () Invoke (). . , For () for, ForEach () foreach, . Invoke () . , , . .

Invoke ()

Invoke (), Parallel, , . , , . .

public static void Invoke(params Action[] actions)





:


: 2016-12-03; !; : 650 |


:

:

, , .
==> ...

1500 - | 1415 -


© 2015-2024 lektsii.org - -

: 0.011 .