28 4 非同步函式的擴充套件性

2022-02-21 01:07:41 字數 2460 閱讀 1749

class

program

public

static

async

task go()

;try

catch

(exception)}}

public

static

class

tasklogger

public

static taskloglevel loglevel

private

static

readonly concurrentdictionarys_log = new concurrentdictionary();

public

static ienumerablegetlogentries()

public

sealed

class

tasklogentry

public

string tag

public datetime logtime

public

string callermembername

public

string callerfilepath

public

int callerlinenumber

public

override

string

tostring()

,tag=,member=,file=()

", logtime, tag ?? "

(none)

", callermembername, callerfilepath, callerlinenumber);}}

public

static tasklog(this tasktask, string tag = null, [callermembername] string callermembername = null

, [callerfilepath]

string callerfilepath = null, [callerlinenumber] int callerlinenumber = -1

)

public

static task log(this task task, string tag = null, [callermembername] string callermembername = null

, [callerfilepath]

string callerfilepath = null, [callerlinenumber] int callerlinenumber = -1

) ;

s_log[task] =logentry;

task.continuewith(t => , taskcontinuationoptions.executesynchronously);

return

task;

}private

struct void //

因為沒有非泛型的taskcompletionsource類

public

static

async task withcancellation(this

task originaltask, cancellationtoken token)

//等待原始任務(以同步方式):若任務失敗,等待它將丟擲第乙個內部異常 而不是丟擲aggregateexception

await

originaltask;

}}

class

program

public

static

void

go()

}catch}}

private

static

async

void

showexceptions()

}public

sealed

class eventawaiter: inotifycompletion

//告訴狀態機是否發生了任何事件

public

bool iscompleted }

//狀態機告訴我們以後要呼叫什麼方法 把它儲存起來

public

void

oncompleted(action continuation)

//狀態機查詢結果 這是await操作符的結果

public

teventargs getresult()

//如果都引發了事件,多個執行緒可能同時呼叫

public

void eventraised(object

sender, teventargs eventargs)

}

架構 擴充套件性

擴充套件選和伸縮性 擴充套件性 指對現有系統影響最小的情況下,系統功能可持續擴充套件或提公升的能力。表現在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,對需求變更可以敏捷響應。它是系統架構設計層面的開閉原則 對擴充套件開放,對修改關閉 架構設計考慮未來功能擴充套件,當系統增加新功能時,不需...

CSS可擴充套件性

今日在寫pc官網的時候,一直對於html css的結構編寫完全按照自己的思維方式,今天把 交給老大的時候,被他指出很多編寫 的錯誤性,比如 結構,標籤的使用,語義化,css的可擴充套件性,由於 主要還是需要做seo優化,所以在標籤使用上也有些不合理之處,給了我一些建議,自己記錄以下 1 在html標...

NoSql的易擴充套件性

nosql現在很火很時髦,大家言必稱nosql,彷彿關係型資料庫已成陳舊落後的代名詞。但依我看,真正理解nosql的還不多,在實際專案中用過的應該就更少了。我也還不理解,更沒怎麼應用過,所以現在要努力學習。在學習過程中,常看到有吹噓nosql相比較關係型資料庫而言,有乙個優點是 易擴充套件。這怎麼理...