原文:
一種延遲方法呼叫的實現
需求場景
**實現
定義任務介面
1inte***ce itask
2 4
bool isrunning 5
void start(); 6
void stop(); 7
void run(); 8
}定義延遲的資訊類
1class
lazyitem
2
9 }
10public
string key
11public action continue
1213public lazyitem(
string key,
int timeout, action continueaction)
14
20 }
延遲的實現
1class
lazyinvoker : itask
2
6 }
78public
bool isrunning
910private
readonly concurrentdictionary<
string, lazyitem> _lazyactions =
new concurrentdictionary<
string, lazyitem>();
1112public
void start()
13
1718public
void stop()
19
2223///
24///
檢測被延遲的任務,達到超時時間則觸發
25///
26///created by:marvin(2014/10/11 12:14)
27public
void run()
28
34 }
3536private
void checkcontinue()
37
50 }
51 }
5253///
54///
延遲工作
55///
56///the identifier.
57///the lazy timeout.
58///the continue action.
59///created by:marvin(2014/10/11 11:48)
60public
void lazydo(
string id,
int lazytimeout, action continueaction)
61 , timeout : ", id, lazytimeout);
67 }
68 }
69 }
7071///
72///
取消任務
73///
74///the action key.
75///created by:marvin(2014/10/11 12:02)
76public
void cancel(
string actionkey)
77 」 had removed
", tmp.key);
84 }
85 }
86 }
87 }
測試
1class
program
2
2021private
static
void dosomething()
22
25 }
執行結果如下:
一種延遲方法呼叫的實現
原文 一種延遲方法呼叫的實現 需求場景 實現 定義任務介面 1inte ce itask 2 4 bool isrunning 5 void start 6 void stop 7 void run 8 定義延遲的資訊類 1class lazyitem 2 9 10public string key...
Swift延遲載入的一種用途
有以下一種情況 我們試圖用cocoa的語音合成類nsspeechsynthesizer來完成對字串的朗讀,這很容易.但是我們還有乙個附加條件,就是在朗讀完一段文字後觸發乙個動作.這貌似也不難,我們只要遵守nsspeechsynthesizerdelegate協議即可,但是光這樣還不行,我們還必須將n...
呼叫方法的另一種方式
一般我們呼叫乙個類的方法,都是通過這個類本身 static方法 或者它的乙個例項去呼叫.比如 inte ce iservice void runservice icontext context class servicea iservice public override void runservi...