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

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

使用抽象類的任務(wù)啟動(dòng)/停止處理

使用抽象類的任務(wù)啟動(dòng)/停止處理

C#
繁星點(diǎn)點(diǎn)滴滴 2022-06-12 15:20:37
我有這個(gè)代碼邏輯來處理我的任務(wù):public abstract class BaseJob{    public bool Running { get; private set; }    public CancellationToken Token => _tokenSource.Token;    private CancellationTokenSource _tokenSource;    public virtual void Start()    {        _tokenSource = new CancellationTokenSource();        Running = true;     }}現(xiàn)在當(dāng)我繼承時(shí),BaseJob我會遇到這種情況:public class CustomJob: BaseJob{public MyEnum Status {get; private set;}public StopRequested { get; set;}public override async void Start(){    base.Start();    while(!StopRequested){        await MyLongRunningMethod();    }    //base.Running = true but I can't access it here!}public async Task<bool> MyLongRunningMethod(){              await Task.Run(()=>{                //more work            },this.Token);            //someWork    return false;}}如您所見,我無法在完成后Running立即將其設(shè)置為 false myJob,我想BaseJob處理它。我必須對基類進(jìn)行哪些代碼邏輯更改才能自動(dòng)檢測何時(shí)myJob完成,然后在Running = false不訪問繼承類的最少訪問的情況下完成任務(wù)?
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

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

您可以重寫您的抽象類以具有可以知道您的工作何時(shí)完成的內(nèi)部啟動(dòng)方法。假設(shè)您的工作是同步的并且不帶參數(shù):


public abstract class BotTask

{


    private bool Running { get; set; }


    public CancellationToken Token => _tokenSource.Token;


    private CancellationTokenSource _tokenSource;


    public abstract void Start();


    protected void InternalStart(Action job)

    {

        _tokenSource = new CancellationTokenSource();

        Running = true;

        job();

        Running = false;

    }

}


public class CustomTask : BotTask

{

    public override void Start()

    {

        InternalStart(MyJob);

    }

}


查看完整回答
反對 回復(fù) 2022-06-12
?
慕萊塢森

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

使運(yùn)行集受保護(hù)而不是私有。這樣它就不能從外部訪問,但它可以被繼承自 BotTask 的實(shí)體訪問



查看完整回答
反對 回復(fù) 2022-06-12
  • 2 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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