最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)方法超時停止的幾種方式

 更新時間:2025年11月16日 16:02:12   作者:張工想跑路  
本文主要介紹了C#實現(xiàn)方法超時停止的幾種方式,包括使用CancellationToken、Task.Wait、Task.WhenAny和第三方庫Polly實現(xiàn)方法超時控制的方法,感興趣的可以了解一下

使用CancellationToken實現(xiàn)超時控制

在C#中,可以通過CancellationTokenSourceCancellationToken實現(xiàn)方法超時停止。創(chuàng)建一個帶有超時設置的CancellationTokenSource,將token傳遞給需要控制的方法。

using System.Threading;
using System.Threading.Tasks;

public async Task ExecuteWithTimeoutAsync()
{
    var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)); // 5秒超時
    
    try
    {
        await LongRunningMethodAsync(cts.Token);
    }
    catch (OperationCanceledException)
    {
        Console.WriteLine("操作已超時取消");
    }
}

private async Task LongRunningMethodAsync(CancellationToken token)
{
    for (int i = 0; i < 10; i++)
    {
        token.ThrowIfCancellationRequested();
        await Task.Delay(1000, token); // 模擬耗時操作
        Console.WriteLine($"執(zhí)行第{i+1}步");
    }
}

使用Task.Wait或Task.WhenAny實現(xiàn)超時

對于非異步方法或需要更靈活控制的場景,可以使用Task.WaitTask.WhenAny配合超時設置。

var task = Task.Run(() => LongRunningMethod());
if (!task.Wait(TimeSpan.FromSeconds(5)))
{
    Console.WriteLine("方法執(zhí)行超時");
}

// 或者使用WhenAny
var timeoutTask = Task.Delay(TimeSpan.FromSeconds(5));
var completedTask = await Task.WhenAny(task, timeoutTask);
if (completedTask == timeoutTask)
{
    Console.WriteLine("方法執(zhí)行超時");
}

使用第三方庫Polly實現(xiàn)超時策略

Polly是一個.NET彈性和瞬態(tài)故障處理庫,提供了簡潔的超時策略實現(xiàn)方式。

using Polly;

var policy = Policy.TimeoutAsync(TimeSpan.FromSeconds(5), 
    TimeoutStrategy.Pessimistic);

try
{
    await policy.ExecuteAsync(async token => 
    {
        await LongRunningMethodAsync(token);
    }, CancellationToken.None);
}
catch (TimeoutRejectedException)
{
    Console.WriteLine("操作已超時");
}

注意事項

處理超時時需要考慮資源清理問題,確保方法被中斷時能正確釋放資源。對于無法響應取消請求的阻塞操作,可能需要使用單獨的線程或進程來終止。

某些場景下可能需要結合多種技術,如先嘗試優(yōu)雅取消,超時后強制終止線程。強制終止線程可能帶來資源泄漏風險,應謹慎使用。

到此這篇關于C#實現(xiàn)方法超時停止的幾種方式的文章就介紹到這了,更多相關C# 超時停止內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

武宁县| 民县| 利辛县| 故城县| 铜鼓县| 金川县| 锦屏县| 乌拉特前旗| 林西县| 宝坻区| 澳门| 襄樊市| 蒲江县| 宁阳县| 太湖县| 承德市| 资源县| 木兰县| 炉霍县| 金坛市| 清镇市| 农安县| 绵阳市| 阜平县| 枝江市| 白城市| 广汉市| 康保县| 邵武市| 铜梁县| 庄河市| 临泉县| 沐川县| 河曲县| 枞阳县| 钟祥市| 陇川县| 共和县| 宁都县| 修水县| 绍兴市|