C Task 任務計畫

2021-09-19 02:59:34 字數 3752 閱讀 6616

using

system;

using

system.threading;

using

system.collections.generic;

namespace

rocky

get}

//////

執行任務的計畫

///

public

ischedule shedule

}///

///該任務最後一次執行的時間

///

public

datetime lastexecutetime

}///

///任務下執行時間

///

public

datetime nextexecutetime

}#endregion

#region

methods

//////

建構函式

///

///為每個任務制定乙個執行計畫

public

task(timercallback callback, ischedule schedule)

this

.exectask

=callback;

this

.schedule

=schedule;

exectask

+=new

timercallback(execute);

taskscheduler.register(

this);}

//////

任務內容

///

///任務函式引數

private

void

execute(

object

state)

elseif(

!(schedule

iscycexecution))

}public

void

start()

public

void

start(

object

exectaskstate)

else

}public

void

refreshschedule()

}public

void

stop()

}public

void

close()

void

idisposable.dispose()

exectask

=null

;taskscheduler.deregister(

this);}

}public

override

string

tostring()

#endregion

}#endregion

#region

taskscheduler

//////

任務管理中心

///使用它可以管理乙個或則多個同時執行的任務

///

public

static

class

taskscheduler

}static

taskscheduler()

//////

查詢任務

///

///

///

public

static

task find(

string

name)

public

static

ienumerator

<

task

>

getenumerator()

//////

終止任務

///

public

static

void

terminatealltask()

}internal

static

void

register(task task)

}internal

static

void

deregister(task task)}}

#endregion

#region

ischedule

//////

計畫立即執行任務

///

public

struct

immediateexecution : ischedule

set}

public

long

duetime

}public

long

period}}

//////

計畫在某一未來的時間執行乙個操作一次,如果這個時間比現在的時間小,就變成了立即執行的方式

///

public

struct

scheduleexecutiononce : ischedule

set}

//////

得到該計畫還有多久才能執行

///

public

long

duetime

return

ms;}

}public

long

period

}///

///建構函式

///

///計畫開始執行的時間

public

scheduleexecutiononce(datetime time)

}///

///週期性的執行計畫

///

public

struct

cycexecution : ischedule

set}

public

long

duetime

return

ms;}

}public

long

period

}///

///建構函式,馬上開始執行

///

///週期時間

public

cycexecution(timespan period)

//////

建構函式,在乙個將來時間開始執行

///

///計畫執行的時間

///週期時間

public

cycexecution(datetime shedule, timespan period)

}///

///計畫的介面

///

public

inte***ce

ischedule

//////

初始化執行時間於現在時間的時間刻度差

///

long

duetime

//////

迴圈的週期

///

long

period

}#endregion}

posted on 2010-06-05 13:13收藏

C Task任務取消

在使用blazor開發工具時,有個需求 掃碼登入頁面需要不斷輪詢介面獲取掃碼狀態,並在對應的狀態下進行對應的操作 重新整理 登入 跳轉等 此時,為了不阻塞前端的響應,需要我們開啟乙個執行緒進行狀態檢測,並在完成後結束執行緒任務 使用取消令牌 cancellationtokensource 相對操作比...

C Task的使用 任務的結果

任務結束時,它可以把一些有用的狀態資訊寫到共享物件中。這個共享物件必須是執行緒安全的。另乙個選項是使用返回某個結果的任務。使用task類的泛型版本,就可以定義返回某個結果的任務的返回型別。為了返回某個結果任務呼叫的方法可以宣告為帶任意返回型別。示例方法taskwithresult 利用乙個元組返回兩...

C Task的使用 連續的任務

通過任務,可以指定在任務完成之後,應開始執行之後另乙個特定任務。例如,乙個使用前乙個任務的結果的新任務,如果前乙個任務失敗了,這個任務就應執行一些清理工作。任務處理程式都不帶引數或者帶乙個物件引數,而任務的連續處理方法都有乙個task型別的引數,這裡可以訪問起始任務的相關資訊 如下面的示例 usin...