.NET 4.5 中包含取消架構(gòu),允許以標(biāo)準(zhǔn)方式取消長(zhǎng)時(shí)間運(yùn)行的任務(wù)。每個(gè)阻塞調(diào)用都應(yīng)支持這種機(jī)制。但目前,并不是所有阻塞調(diào)用都實(shí)現(xiàn)了這個(gè)新技術(shù)。已經(jīng)實(shí)現(xiàn)了這種機(jī)制的技術(shù)有任務(wù)(http://www.cnblogs.com/afei-24/p/6907840.html),并發(fā)集合類(http://www.cnblogs.com/afei-24/p/6836976.html),并行LINQ(http://www.cnblogs.com/afei-24/p/6860753.html)和幾種同步機(jī)制。
  取消架構(gòu)基于協(xié)作行為,它不是強(qiáng)制的。長(zhǎng)時(shí)間運(yùn)行的任務(wù)會(huì)檢查它是否被取消,并返回控制權(quán)。
  支持取消的方法接受一個(gè)CancellationToken參數(shù)。這個(gè)類定義了IsCancellationRequested屬性,其中長(zhǎng)時(shí)間運(yùn)行的操作可以檢查它是否應(yīng)終止。使用Register()方法注冊(cè)一個(gè)將在取消此 System.Threading.CancellationToken 時(shí)調(diào)用的委托。它在調(diào)用Cancel()方法取消操作時(shí)調(diào)用。

1.Parallel.For()方法的取消
  Parallel類提供了For()方法的重載版本,在重載版本中,可以傳遞ParallelOptions類型的參數(shù)。使用ParallelOptions類型,可以傳遞一個(gè)CancellationToken參數(shù)。CancellationToken參數(shù)通過(guò)創(chuàng)建CancellationTokenSource來(lái)生成。由于CancellationTokenSource實(shí)現(xiàn)了ICancelableOperation接口,因此可以用CancellationToken注冊(cè),并允許使用Cancle(),CancleAfter()等方法取消操作。
  示例:

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

    static void CancelParallelFor()
        {            var c
        
		

網(wǎng)友評(píng)論