第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

異步等待任務(wù)<T>完成超時(shí)

異步等待任務(wù)<T>完成超時(shí)

互換的青春 2019-06-15 11:36:25
異步等待任務(wù)<T>完成超時(shí)我想等一個(gè)任務(wù)<T>為了完成一些特殊的規(guī)則:如果在X毫秒之后還沒(méi)有完成,我想向用戶顯示一條消息。如果在Y毫秒之后還沒(méi)有完成,我想自動(dòng)請(qǐng)求取消.我可以用任務(wù),繼續(xù)異步等待任務(wù)完成(即,在任務(wù)完成時(shí)安排要執(zhí)行的操作),但這不允許指定超時(shí)。我可以用任務(wù)等等同步等待任務(wù)以超時(shí)方式完成,但這會(huì)阻塞我的線程。我如何異步地等待超時(shí)任務(wù)的完成?
查看完整描述

3 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

下面是一個(gè)擴(kuò)展方法版本,它包含了取消原來(lái)任務(wù)完成時(shí)的超時(shí),正如AndrewArnott在注釋中建議的那樣他的回答.

public static async Task<TResult> TimeoutAfter<TResult>(this Task<TResult> task, TimeSpan timeout) {

    using (var timeoutCancellationTokenSource = new CancellationTokenSource()) {

        var completedTask = await Task.WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token));
        if (completedTask == task) {
            timeoutCancellationTokenSource.Cancel();
            return await task;  // Very important in order to propagate exceptions
        } else {
            throw new TimeoutException("The operation has timed out.");
        }
    }}


查看完整回答
反對(duì) 回復(fù) 2019-06-15
?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以用Task.WaitAny等待多個(gè)任務(wù)中的第一個(gè)任務(wù)。

您可以創(chuàng)建兩個(gè)額外的任務(wù)(在指定的超時(shí)之后完成),然后使用WaitAny等待先完成。如果首先完成的任務(wù)是您的“工作”任務(wù),那么您就完成了。如果首先完成的任務(wù)是超時(shí)任務(wù),那么您可以對(duì)超時(shí)(例如請(qǐng)求取消)作出反應(yīng)。


查看完整回答
反對(duì) 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 797 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)