首先來說說 task.factory.startnew這種方式來建立task,這裡的waitall()指的是等待所有task執行完成,並且裡面的task引數(t1,t2)是非同步的,先以匿名委託方式
static其執行結果是 bavoid main(string
args)
);task t2 = task.factory.startnew(delegate
); task.waitall(t1, t2);
console.readkey();
console.readkey();
}private
static
void
mymethoda()
private
static
void
mymethodb()
再看看以傳參函式形式來看,並以拉姆達表示式來進行
因mymethoda()裡面將tas**程掛起了,所以先輸出了b,也證明了task的非同步!
使用new task建立task
、最簡單的構造task的方式為使用lambda表示式:
[csharp]view plain
copy
?task task = new task(() => taskmethod("task 1"));
task.start();
int result = task.result;
console.writeline("result is: ", result);
tasktask = new task(() => taskmethod("task 1"));需要注意的是,我們構造了task任務,然後start(),之後返回值即task.result屬性!由於result的關係,因此執行緒將等待result得到後再往下進行。task.start();
int result = task.result;
console.writeline("result is: ", result);
二、task同步執行runsynchronously
[csharp]view plain
copy
?task task = createtask("task 2");
task.runsynchronously(); //執行在主線程中,等同於直接執行: taskmethod("task 2");
int result = task.result;
console.writeline("result is: ", result);
tasktask = createtask("task 2");這裡沒有使用start()而是使用runsynchronously(),直接同步執行!等同於直接執行 result = taskmethod("task 2");task.runsynchronously(); //執行在主線程中,等同於直接執行: taskmethod("task 2");
int result = task.result;
console.writeline("result is: ", result);
三、task的執行狀態
[csharp]view plain
copy
?task task = createtask("task 3");
console.writeline(task.status);
task.start();
while (!task.iscompleted)
console.writeline(task.status);
int result = task.result;
console.writeline("result is: ", result);
tasktask = createtask("task 3");上面的**使用了狀態判斷(iscompleted)輪查方式,輸出了不同的task狀態。等到task執行完畢後,也就自然得到int結果。console.writeline(task.status);
task.start();
while (!task.iscompleted)
console.writeline(task.status);
int result = task.result;
console.writeline("result is: ", result);
關於DDD的認識
引用自http www.jdon.com jivejdon forum messagelist.shtml?thread 32093 count 15 start 30 什麼是dao,repository?在repository情況下,dao其實是多餘的,repository可以完全替代dao。以j...
關於粒度的認識
構建資料倉儲時,如何描述事實表的單個行?答案就是粒度。粒度定義意味著對各事實錶行實際代表的內容給出明確的說明,傳遞了同事實表度量值相聯絡的細節所達到的程度方面的資訊。實際應用中我們一般會這樣定義粒度,比如 顧客購物券上掃瞄裝置一次拾取的分列項內容 醫生開出的單據專案內容 銀行帳號的月快照 手機使用者...
關於指標的認識
在寫圖的鄰接矩陣轉化為圖的鄰接表儲存時,碰到了乙個問題,為每個節點建立好vnode之後,每個節點的arcnode無法正確建立。在除錯的過程中,發現程式有新建節點的操作,但是沒有與之前的鍊錶指標關聯,這個問題本質上是線性表的建立問題。尋找程式的錯誤,發現首先是新建操作的p節點沒有回到起始位置,也就是沒...