相关疑难解决方法(0)

取消任务正在抛出异常

从我读到的有关任务的内容来看,以下代码应该取消当前正在执行的任务而不会抛出异常.我的印象是,任务取消的重点是礼貌地"要求"任务停止而不中止线程.

以下程序的输出是:

倾倒异常

[OperationCanceledException]

取消并返回最后计算的素数.

我试图在取消时避免任何例外.我怎么能做到这一点?

void Main()
{
    var cancellationToken = new CancellationTokenSource();

    var task = new Task<int>(() => {
        return CalculatePrime(cancellationToken.Token, 10000);
    }, cancellationToken.Token);

    try
    {
        task.Start();
        Thread.Sleep(100);
        cancellationToken.Cancel();
        task.Wait(cancellationToken.Token);         
    }
    catch (Exception e)
    {
        Console.WriteLine("Dumping exception");
        e.Dump();
    }
}

int CalculatePrime(CancellationToken cancelToken, object digits)
{  
    int factor; 
    int lastPrime = 0;

    int c = (int)digits;

    for (int num = 2; num < c; num++)
    { 
        bool isprime = true;
        factor = 0; 

        if (cancelToken.IsCancellationRequested)
        {
            Console.WriteLine ("Cancelling …
Run Code Online (Sandbox Code Playgroud)

c# multithreading c#-4.0

55
推荐指数
4
解决办法
6万
查看次数

标签 统计

c# ×1

c#-4.0 ×1

multithreading ×1