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...